[英]Eclipse/Maven error: "No compiler is provided in this environment"
我是 Java 企業開發領域的新手。 我組織的 Java 大師無限期休假,我被分配了維護他開發的一些 Java 應用程序的任務。 在他離開之前,他在我的電腦上用 Maven 設置了 Eclipse [Kepler SR1],它似乎工作正常。
現在我准備部署我的第一個修改並需要運行 Maven install
,但我無法讓它工作 - 我在我的控制台上得到以下輸出:
[錯誤] 無法在項目 mrpapp 上執行目標 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile): Compilation failure
[錯誤] 此環境中未提供編譯器。 也許您在 JRE 上運行而不是在 JDK 上運行?
但我肯定在運行 JDK 而不是 JRE。 我仔細檢查了我的$JAVA_HOME
( C:\\Program Files (x86)\\Java\\jdk1.7.0_60
),它的bin
目錄中有一個javac.exe
。
我附上我的pom.xml
文件的副本供您查看。 我確定那里有什么東西導致了這個問題,但我不確定它可能是什么。 我正在使用裝有 Windows 7 64 位的筆記本電腦,如果您需要任何進一步的平台/環境信息,我也可以提供。
任何幫助將不勝感激。
轉到窗口 → 首選項 → Java → 已安裝的 JRE。
並查看是否有指向您的JDK路徑的條目,如果沒有,請單擊“編輯”按鈕並將您配置的路徑放在您的JAVA_HOME
環境中。
Screen_shot將“tools.jar”添加到已安裝的 JRE。
Eclipse
-> window
-> preference
。installed JREs
-> Edit
java/JDKx.x/lib
文件夾中選擇tools.jar
。進入 Window > Preferences > Java > Installed JREs > 並檢查您安裝的 JREs。 您應該在那里有一個帶有 JDK 的條目。
我嘗試了所有的東西; 對我有用的是:
在 pom.xml 中添加此配置
<project ...>
...
<build>
...
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.7.0_79\bin\javac</executable>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
我在使用 Jdk1.8_92 時也遇到過類似的錯誤。 對我來說,我發現我的 jdk 文件夾中缺少 tools.jar。 由於我是在控制台中運行,我無法嘗試其他人建議的eclipse選項。
我安裝了 jdk-8u92-windows-x64。 在我嘗試了所有選項后,我發現 jdk1.8.0_92/lib 文件夾中缺少 tools.jar。 我從舊版本的 java 中復制了 tools.jar。 然后它就可以編譯了。
請檢查您的 pom.xml 元素中是否有以下條目,尤其是 jdk.version,因為切換到已安裝的 jre 並沒有修復類似的錯誤。
<properties>
<jdk.version>1.7</jdk.version>
<spring.version>4.1.1.RELEASE</spring.version>
<jstl.version>1.2</jstl.version>
<junit.version>4.11</junit.version>
</properties>
如果有人在 Ubuntu 中運行 Eclipse 並遇到此問題,我可以按照以下步驟找到答案:
在安裝了 JDK 8 和 JRE 8 的 Windows 10 上,嘗試在新安裝的 Eclipse Neon(適用於 JEE 開發人員)安裝中在 Eclipse 中執行 maven 構建時遇到相同的錯誤。
我曾嘗試將 tools.jar 指定為外部庫,並將 jdk 設置為 eclipse 中的 -vm。 這些事情都沒有奏效。
如上所述,選擇 JDK 作為默認執行環境就可以了。
步驟 3 中兼容 JRE 列表框上方的文本表示“可以通過檢查指定默認 JRE”
注意:我還有 maven 編譯器插件在 pom 中明確列出 1.8
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
安裝 JRE在我的情況下,我通過刪除重復的名稱解決了這個問題,我只保留了一個名稱:jdk.1.8.0_101
就我而言,我創建了一個運行配置,每當我嘗試運行它時,都會顯示錯誤。 在一些網站上搜索后,我編輯了運行配置並在 JRE 選項卡下,將運行時 JRE 選擇為“工作區默認 JRE”,我已經將其配置為指向我的本地 Java JDK 安裝(例如 C:\\Program Files (x86)) \\Java\\jdk1.8.0_51)。 這解決了我的問題。 也許它可以幫助那里的人。
遇到了同樣的問題,使用以下方法將 java 指向 eclipse 中的 bin 文件夾:windows > 首選項 > java > 已安裝的 JRE > 刪除任何現有的 JRE 並將其指向您的 java bin 文件夾(主要在 C:\\Program Files\\Java\\jdk1.8 下) .x_xx)。
然后運行 maven install 它應該可以工作。
要檢查您的 Maven 使用什么,請打開命令行並鍵入:
mvn –version
驗證 JAVA_HOME 是否指的是 JDK home 而不是 JRE
在 Windows 上:
轉到系統屬性 -> 高級系統設置 -> 高級 -> 環境變量並在系統變量部分選擇 JAVA_HOME 變量並單擊編輯 使用以下變量名稱填寫表單:JAVA_HOME 變量值:
在 Unix 上:
export JAVA_HOME=<ABSOLUTE_PATH_TO_JDK>
看到 這個鏈接
當我運行mvn compile
,我在控制台中遇到以下錯誤:
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1087 source files to C:\Code\DevVNextComplete\Development_vNext\Source\JARS\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[解決]
我在我的環境變量中添加了 JAVA_HOME 變量,然后它起作用了。
如果您使用 maven,請在 pom.xml 中的插件標簽內(根據需要更新版本)包含以下標簽。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
對我來說(在 Windows 10 上),當我運行mvn install
時,我在 Windows 命令提示符下收到錯誤“此環境中沒有提供編譯器”。 修復是將JAVA_HOME環境變量更改為指向我的 jdk (C:\\Program Files\\Java\\jdk1.8.0_101); 以前它指向jre。
為了讓 Eclipse 使用新的 jdk,我在 eclipse 發行版中編輯了eclipse.ini
並將-vm
的行更改為C:\\Program Files\\Java\\jdk1.8.0_101\\bin
。
檢查 pom.xml 中的 java 版本和 Eclipse->Window->Preferences->Installed JREs 中的 jre 版本。 在我的例子中,pom.xml 有不同的版本(它有 1.8,而 eclipse 使用 1.7)。 將 pom.xml 中的版本修復為 1.7 有效。
如果您在命令窗口中的 eclipse 之外工作
通過在命令窗口中輸入以下命令,確保您擁有正確的 JAVA_HOME 並且該目錄包含編譯器:
dir %JAVA_HOME%\bin\javac.*
1.進入Windows-->Preferences-->Java-->Installed JREs-->Execution Environments
2.在“執行環境”框中選擇您當前使用的java版本。 因此,在“Compatible JREs”框中,您可以看到“ jre1.8.0_102[perfect match] ”(如果您的Java 版本是1.8)。 然后嘗試使用 maven 構建。
Maven 需要 JDK 才能編譯。 在 Eclipse 中,您需要將 JRE 更改/替換為 JAVA_HOME 指向的 JDK 路徑。 導航到“窗口”>“首選項”>“Java”>“已安裝的 JRE”。
確保你的 pom.xml 中的 maven-compiler-plugin 在你的 JAVA_HOME 中有 java 版本的源和目標
http://learn-automation.com/maven-no-compiler-is-provided-in-this-environment-selenium/
請確保您有%JAVA_HOME%
通過鍵入SET echo %JAVA_HOME%
在命令提示符。 如果您沒有該設置,那么您需要將您的 Java 路徑添加到 Window 的環境變量中。
我通過在我的環境變量中提供 JAVA_HOME 並重新啟動 intellij 解決了這個問題
您可以按照下面給出的任何一個進行操作。
我在使用 Eclipse Neon 時遇到了一個問題,即使我在 Preferences->Java->Installed JREs 下添加了正確的位置,工作區默認值實際上並沒有改變。 這是在我創建的一個新工作區中,用於處理代碼分支; 它最初設置為 JRE 位置而不是 JDK。 然而,即使在更改首選項之后,我也可以使用命令行進行構建,但在 Eclipse 中構建會產生無編譯器錯誤。 請參閱
對於我必須手動編輯哪些 Eclipse 配置文件才能使 Eclipse 識別正確的工作區默認值的答案。 我仍然不知道為什么首選項設置沒有貫徹到新工作區的配置中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.