我安装了jdk8和9。在有效的pom.xml中,我可以看到编译器插件被分配给1.8,但是mvn clean install打印错误太阳类缺失,让我相信它仍然使用jdk9。
$ mvn -version
Maven home: D:\Java\apache-maven-3.2.5
Java version: 9, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk-9
的pom.xml:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</execution>
</executions>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
答案 0 :(得分:0)
你有一个边缘案例。
您(可能)有一些最初为Java 8(或更早版本)开发的代码,这些代码依赖于内部JRE类。代码不应该这样做。
显然发生的事情是内部类已被删除或替换。
您能够编译此代码的唯一方法是下载并安装正版Java 8 JDK,并在运行Maven之前将$PATH
设置为引用它。
但这只是一个止拍。真正的解决方案是转换代码,使id不依赖于内部类。无论如何,你最终都必须这样做。所以现在也可以这样做......并避免使用特殊的Java 8设置来构建代码。
您无法使用POM文件来解决此问题。这些类(可能)不再存在于“rt.jar”文件中,java编译器和运行时正在查找它们。
我终于再次完成了这项工作!重新启动操作系统后。
可能发生的是您在“.rc”文件中更改了PATH设置但未重新启动shell或重新获取文件。或类似的东西。重启可能不是必需的。注销并再次登录可能就足够了。