当前位置: 首页 > 知识库问答 >
问题:

Maven无法找到OpenJDK 11的jaxb-api,尽管它已经存在于存储库中

楚煜
2023-03-14

我有一台有Windows操作系统的机器,它被用来构建很少的战争项目。它安装了Java8。我正在使用Maven 3.2.5构建这些WAR项目。一切都很好。但是由于Java8免费更新的结束,将来会成为一个问题,我想到了升级到OpenJDK11。

我下载了OpenJDK11,但没有安装它,因为我只是想尝试这个项目的1开始。我拿起一个WAR项目来检查OpenJDK11是否工作。这个项目是使用JHipster和Spring Boot创建的。我将这个项目的pom.xml更改为使用spring-boot.version到2.1.2Java.verion到11,并将jaxb-api、jaxb-impl、jaxb-runtimejavax.activationenteries(如下所示)用于避免Java 11中与jaxb相关的依赖错误。

在windows命令提示符中,我将java_homepath变量设置为OpenJDK11,然后触发MVN clean compile package命令。正如所料,所有与jaxb相关的依赖项都在maven存储库中下载,但是maven仍然抛出错误noclassDefounderror:javax/xml/bind/jaxbexception,而jaxb-api jar仍然在maven存储库中。我试图再次发射命令,但没有成功。

谁能请指导我关于可能的根本原因或任何变通办法。

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>

共有1个答案

冯通
2023-03-14

原因可能是java9之后的模块,所以应该创建一个module-info.java文件,更多细节请参考相关文档。

 类似资料:
  • 我有一个,具有以下依赖关系: 我尝试了几个其他版本,也从本地repo中删除了依赖项,并再次尝试,但没有帮助。会有什么问题?

  • 我在本地存储库中的 maven 依赖项中遇到了问题。 SBT找不到它。已将日志级别设置为调试,但未获得任何新信息。 文件在仓库里。我将粘贴路径从控制台复制到文件资源管理器,它们就在那里。 输出: 编辑:我在项目/构建中使用scala文件添加了路径,如 http://code.google.com/p/simple-build-tool/wiki/LibraryManagement "如果您将本地M

  • 问题内容: 我正在使用Maven版本3.6.1 我想在Maven存储库(elasticsearch-rest-high-level-client 7.5.1)中下载工件。我可以在 maven-central-repository search 但是在搜索elasticsearch elasticsearch-rest-high-level-client/7.5.1给出的回购协议时,它们是Centr

  • 我们有一个nexus服务器,它有一个公共maven公共存储库组,其中包含每个外部代理存储库(例如maven central)。此外,我们还有一个本地托管存储库。让我们称之为MyProjectRepository。它分为发布回购和快照回购。 所以,现在看起来是这样的: MyProjectRepository 我的项目存储库-快照 工件一 快照-5 ... 快照-1 快照-3 ... 快照-1 好吧,

  • 我运行一个开源库,正在考虑让它完全接受Maven并将其上传到中央存储库,以便人们可以轻松地将其添加到他们的项目中。 问题在于,它依赖于几个较旧的库,这些库在任何 Maven 存储库中都不存在。目前,这意味着pom文件必须使用依赖项范围。我还阅读了有关为项目创建本地存储库以安装第三方库的信息。 但是,我的印象是,当我将库部署到 Maven 存储库时,这两种方法都不能很好地工作。也就是说,如果它依赖于

  • 我有一个小型开源图书馆的分叉,我正在github上工作。我想通过maven让其他开发人员可以使用它,但是我不想运行我自己的Nexus服务器,因为它是一个分叉,所以我不能轻松地将它部署到oss.sonatype.org. 我想做的是将它部署到github,这样其他人就可以使用maven访问它。最好的方法是什么?