java 从使用jdk8迁移到jdk11,获取与tools.jar相关的错误

k5ifujac  于 2023-03-06  发布在  Java
关注(0)|答案(2)|浏览(370)

我正在将一个项目从jdk 8迁移到jdk 11。在我的pom.xml文件中,我放置了

<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<java.version>11</java.version>

以及

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>1.11</source>
        <target>1.11</target>
        <release>11</release>
        <fork>true</fork>
    </configuration>
</plugin>

运行mvn clean install命令后,我得到一个错误:无法jdk.tools在指定路径/opt/jdk-11.0.9/../lib/tools.jar中找到工件www.example.com:tools:jar:1。我知道tools.jar已从jdk 11中删除。我认为pom.xml中的一些依赖项依赖于tools.jar,但我尚未找到一个很好的解决方案来确定这些依赖项是什么。或者可能是其他一些问题。

pengsaosao

pengsaosao1#

基于你的上述配置,它是预期得到这下面的错误:
编译时发生致命错误:错误:无效的目标版本:1.11
我建议将源代码和发布目标更改为11,而不是1.11,请参见下面的示例。

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
            <source>11</source> 
            <target>11</target>
        </configuration>
    </plugin>

然后使用mvn dependency:treemvn dependency:analyze和/或使用-X选项对其进行调试。

balp4ylt

balp4ylt2#

有时候如果这个错误发生在Maven中,它会完全阻止它运行,所以dependency:tree目标也会给予这个错误。
在我的例子中,我得到它是因为一个旧的odfdom依赖关系提到here-如果你在类似的情况下,你可以尝试禁用你的依赖关系,并启用他们一个接一个,看看错误是否消失,至少Maven运行正确。

相关问题