从使用 jdk8 迁移到 jdk11,出现与 tools.jar 相关的错误

问题描述

我正在将一个项目从 jdk8 迁移到 jdk11。 在我的 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 命令后,出现错误:在指定路径 /opt/jdk-11.0.9/../lib/tools.jar 找不到工件 jdk.tools:tools:jar:1。我知道 tools.jar 已从 jdk11 中删除。我在想我的 pom.xml 中的一些依赖项依赖于 tools.jar,我还没有找到一个很好的解决方案来弄清楚这些依赖项是什么。或者可能是其他一些问题。

解决方法

根据您的上述配置,预计会出现以下错误:

致命错误编译:错误:无效目标版本: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 和/或使用 -Xoption 对其进行调试。