mvn命令行java编译器版本是错误的

时间:2017-11-13 02:16:00

标签: java maven

我安装了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>

1 个答案:

答案 0 :(得分:0)

你有一个边缘案例。

您(可能)有一些最初为Java 8(或更早版本)开发的代码,这些代码依赖于内部JRE类。代码不应该这样做

显然发生的事情是内部类已被删除或替换。

您能够编译此代码的唯一方法是下载并安装正版Java 8 JDK,并在运行Maven之前将$PATH设置为引用它。

但这只是一个止拍。真正的解决方案是转换代码,使id不依赖于内部类。无论如何,你最终都必须这样做。所以现在也可以这样做......并避免使用特殊的Java 8设置来构建代码。

您无法使用POM文件来解决此问题。这些类(可能)不再存在于“rt.jar”文件中,java编译器和运行时正在查找它们。

  

我终于再次完成了这项工作!重新启动操作系统后。

可能发生的是您在“.rc”文件中更改了PATH设置但未重新启动shell或重新获取文件。或类似的东西。重启可能不是必需的。注销并再次登录可能就足够了。