[英]mvn command line java compiler version is mistaken
我安裝了jdk8和9。 在有效的pom.xml中,我可以看到編譯器插件已分配給1.8,但是mvn clean install打印錯誤缺少sun類,這使我相信它仍然使用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>
你有一個極端的情況。
您(大概)擁有一些最初為Java 8(或更早版本)開發的代碼,這些代碼依賴於內部JRE類。 代碼不應該這樣做 。
顯然發生的是內部類已被刪除或替換。
能夠編譯此代碼的唯一方法是,在運行Maven之前,下載並安裝一個正版Java 8 JDK並設置$PATH
使其引用它。
但這只是一個權宜之計。 真正的解決方案是轉換代碼,以使id不依賴於內部類。 無論如何,您最終都必須這樣做。 因此,現在就做吧……並避免使用特殊的Java 8設置來構建代碼的麻煩。
您無法使用POM文件來解決此問題。 這些類(可能)不再存在於Java編譯器和運行時正在尋找它們的“ rt.jar”文件中。
我終於又得到了這份工作! 重啟操作系統后。
可能發生的情況是,您在“ .rc”文件中更改了PATH設置,但沒有重新啟動Shell或重新獲得該文件的資源。 或類似的東西。 可能不需要重新啟動。 注銷並再次登錄就足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.