簡體   English   中英

mvn命令行Java編譯器版本錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM