如何修复无效的目标版本:Maven Build中的1.7、1.8、1.9或1.10错误
如果您正在使用Maven構建Java項目,可能是在Eclipse中,或者是通過運行mvn install在命令提示符下構建的,并且構建失敗并顯示諸如“無效的目標發行版:1.7”或“無效的目標發行版:1.8”之類的錯誤,那么您來了到正確的地方。 在本文中,我將向您顯示發生此錯誤的原因,以及即使在您的計算機上安裝了更高的Java版本(如Java 9、10,或者可能在下個月使用Java 11)也可以處理這些錯誤。 問題的根本原因是,您在pom.xml文件中為Maven編譯器插件指定了更高的Java版本 ,而不是Maven在系統中所知道的,因此這就是說無效的目標發行版的原因。
一個簡單的解決方案是在pom.xml中減少目標版本,或者如果要在更高版本中構建項目,則安裝新的Java版本。
但是,解決此問題的關鍵是要知道Maven從JAVA_HOME變量而不是從PATH環境變量中選擇Java版本。
這意味著即使您已經安裝了JDK 8,但是如果您的JAVA_HOME仍在引用JDK 1.7,那么您將收到此錯誤。
幸運的是,您可以發現,我的意思是您的Maven使用的是哪個Java版本。 只需從命令提示符處運行mvn -version命令,它將打印JAVA_HOME變量的值并確認它正在使用哪個版本的JDK來構建您的項目。
最近,當我遇到此錯誤時,我正在舊計算機上使用Maven構建Java項目。 我以為自己擁有最新的Java版本,這就是為什么我對此錯誤感到驚訝。
這是我的Maven pom.xml的樣子:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin>這是mvn -version的示例輸出:
$ mvn -version Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00 Maven home: C:\apache-maven-3.2.3 Java version: 1.6.0_37, vendor: Sun Microsystems Inc. Java home: C:\jdk1.6.0_37\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"您可以看到我的機器中的Maven使用的是JDK 1.6.0_37 ,這就是為什么當我以JDK 1.7作為目標構建Maven項目時它失敗了的原因。
一旦我將pom.xml更新為使用目標1.6,該構建即開始工作。
因為我的項目不需要Java 7,所以只需更改Maven編譯插件,如下所示:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin>但是,如果必須使用JDK 1.7來構建Java項目,則只需安裝并更新JAVA_HOME變量,該錯誤就會消失。
此解決方案非常好,因為您可以立即解決問題。
如果您的Maven編譯器插件具有<target> 1.8 </,則會出現此錯誤
目標>,但是您計算機中的JAVA_HOME變量所引用的Java版本低于JDK 1.8,例如JDK 1.6或JDK 1.7。
Maven文件最初可能看起來像:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin>為了解決此錯誤,請更改目標以使其與Java版本匹配,以引用您的JAVA_HOME變量,或者安裝新的JDK并更新JAVA_HOME變量。
如果您不知道,請參見本文,以查找在Windows和Linux中更改JAVA_HOME環境變量的值的確切步驟。
順便說一句,如果您在受限的環境中工作,例如在一家大型公司中,該公司會自動部署軟件,并且無法添加或編輯環境變量,那么您仍然可以在本地外殼程序中更改它們,如我之前的文章如何設置Windows中Maven的特定Java版本 。
如果您的maven編譯器插件具有<target> 1.9 </ target>,但是計算機中的JAVA_HOME變量引用的Java版本低于JDK 1.9,例如JDK 1.8或JDK 1.7,則會出現此錯誤。
如上一節所述,將目標更改為pom.xml或安裝新的JDK并更新JAVA_HOME環境變量以指出新的JDK bin目錄。
由于Maven使用JAVA_HOME,因此即使您安裝了正確的Java版本,也無法解決該問題,除非您更新此環境變量。
同樣,如果使用進行編譯,則將獲得無效的目標版本:1.10
<target> 1.10 </ target>,并且您的JAVA_HOME是指JDK 9或JDK 8。
現在,您可以泛化此問題并根據您在pom.xml中指定的Java版本以及計算機上安裝的Java版本以及JAVA_HOME環境變量引用的Java版本進行解決。
您可能喜歡的其他Maven文章
- Maven,ANT和Jenkins有什么區別? ( 回答 )
- 如何增加Maven的堆大小? ( 步驟 )
- 如何解決Maven Eclipse Dependency搜索不起作用的問題? ( 解決方案 )
- 如何在Windows 10中安裝Maven? ( 步驟 )
- 如何使用ANT構建Java項目? ( 文章 )
- 如何在ANT中創建或修改build.xm? ( 教程 )
- 前5位免費的Apache Maven書籍( 書籍 )
- 關于Maven Java Developer的10點要知道的( maven )
- 每個Java開發人員都應該知道的10個Maven插件( 插件 )
- 6個Java開發人員免費的Maven和Jenkins課程( 課程 )
- 如何為Maven設置特定的Java版本( 教程 )
感謝您到目前為止閱讀本文。 如果您按照這些提示設法解決了問題,請與您的朋友和同事分享。 如果您仍然遇到問題,請留下注釋,我們也許可以一起解決您的問題。
翻譯自: https://www.javacodegeeks.com/2018/12/fix-invalid-target-release-error-maven.html
總結
以上是生活随笔為你收集整理的如何修复无效的目标版本:Maven Build中的1.7、1.8、1.9或1.10错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 索甲仁波切简介 关于索甲仁波切简介
- 下一篇: Spring Boot微服务,Docke