在中央找不到神器 sun-jaxb:jaxb-api:jar:2.2

Could not find artifact sun-jaxb:jaxb-api:jar:2.2 in central

我正在尝试将项目从 JDK 7 升级到 JDK 8。 为了在编译期间解决一些问题,我还需要将 Maven 升级到 3.6.3。 另一个问题已通过此升级解决,但是,我在 mvn install

期间收到以下错误
Failed to execute goal on project jbossha-PATCH: Could not resolve dependencies for project com.company.wae:jbossha-PATCH:jar:5.1.0.GA: Could not find artifact sun-jaxb:jaxb-api:jar:2.2 in central (https://repo.maven.apache.org/maven2) -> [Help 1]

当我检查我的 m2 存储库时,jax-api.jar 出现在 sun-jaxb 文件夹下。如果我删除 sun-jaxb,它会用 jax-api.jar.

再次创建

此依赖项存在于项目中很多pom.xml。

为什么报错说找不到工件,有没有办法解决这个问题?

Why the error is saying that it can not find the artifact and is there a way to solve this issue?

因为 POM 文件中的依赖关系不正确。我检查了一下,Maven Central 中没有“sun-jaxb”的官方依赖项。

Java 8 中 JAXB apis 的正确 Maven 依赖项是

      <dependency>                                                          
        <groupId>javax.xml.bind</groupId>                                   
        <artifactId>jaxb-api</artifactId>                                   
        <version>2.2.8</version>                                            
        <scope>provided</scope>                                             
      </dependency>

如“

因此,一个好的解决方案是更新所有 POM 依赖项。


现在我假设您尝试构建的是在开始移植之前正确构建的。 (你检查过了吗?)如果是,那么它一定是从……某处获得了“sun-jaxb:jaxb-api:jar:2.2”依赖:

  • 它可能“非正式地”在 Maven Central 中,并因清理而被删除
  • 您(或之前的维护者)可能已将其直接安装到构建盒的本地存储库中。
  • 您可能是从另一个仓库获取的;例如以前有人上传过的公司 Maven 存储库。

弄清楚它以前是如何工作的是个好主意。