簡體   English   中英

Eclipse/Maven 錯誤:“此環境中未提供編譯器”

[英]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_HOMEC:\\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。

  1. Eclipse -> window -> preference
  2. 選擇installed JREs -> Edit
  3. 添加外部罐子
  4. java/JDKx.x/lib文件夾中選擇tools.jar
  5. 單擊完成

進入 Window > Preferences > Java > Installed JREs > 並檢查您安裝的 JREs。 您應該在那里有一個帶有 JDK 的條目。

https://cduu.wordpress.com/2013/03/08/maven-eclipse-compiler-error-no-compiler-is-provided-in-this-environment/

我嘗試了所有的東西; 對我有用的是:

  1. 右鍵單擊 Eclipse 項目並導航到屬性。
  2. 單擊 Java Build Path 並轉到 Libraries 選項卡。
  3. 檢查那里添加了哪個版本的 Java; 是 JRE 還是 JDK?
  4. 如果您正在使用 Maven 項目並希望構建解決方案。
  5. 選擇添加了它們的 JRE,然后單擊刪除。
  6. 單擊添加外部類文件夾並通過從系統中選擇來添加 JDK 安裝。
  7. 單擊應用和確定。
  8. 重新啟動 Eclipse。
  9. 構建成功。

在 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。 然后它就可以編譯了。

這對我有用。 1.點擊窗口->首選項->安裝的JRE。 2. 檢查您的參考是否適用於 JDK,如下圖所示。 在此處輸入圖片說明

如果沒有,單擊添加-> 標准 VM -> 通過選擇目錄提供 JDK 路徑,然后單擊完成,如圖所示在此處輸入圖片說明

  1. 最后一步,點擊 Installed JREs -> Execution Environments -> 選擇你的 JDE,如下圖所示在此處輸入圖片說明

  2. Maven -> 清潔

請檢查您的 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 並遇到此問題,我可以按照以下步驟找到答案:

  1. Eclipse->窗口->首選項。
  2. 選擇已安裝的 JREs->Add
  3. 選擇標准虛擬機。
  4. JRE 主頁:按 [目錄..] 按鈕。
  5. 選擇你的 java(我的問題是我的 eclipse 用 java8 運行,我的 VM 用 java7),在我的例子中 java8 安裝在 usr/local/jvm/java-8-oracle 中。
  6. 按完成。
  7. 然后按已安裝的 JRES 箭頭,以便您可以看到其他選項。
  8. 轉到執行環境。
  9. 在左側和右側選擇 JavaSE-1.6(兼容的 JRE),您必須選擇剛剛安裝的 Java(在我的例子中是 java-8-oracle)。 您必須使用 JavaSE1.8 執行此步驟。
  10. 單擊確定並重新啟動 Eclipse。

在安裝了 JDK 8 和 JRE 8 的 Windows 10 上,嘗試在新安裝的 Eclipse Neon(適用於 JEE 開發人員)安裝中在 Eclipse 中執行 maven 構建時遇到相同的錯誤。

我曾嘗試將 tools.jar 指定為外部庫,並將 jdk 設置為 eclipse 中的 -vm。 這些事情都沒有奏效。

如上所述,選擇 JDK 作為默認執行環境就可以了。

  1. Eclipse->window->preference->java->Installed JREs->Execution Environments。
  2. 選擇 JavaSE-1.8
  3. 在“Compatible JREs”中檢查JDK1.8。

步驟 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

按照: Windows -->首選項--> Java --->已安裝的JRE

示例圖像

點擊“搜索..”

導航到C盤--->程序文件

示例圖像 2

Eclipse 會找到所有的 jre 和 jdk --> 選擇jdk 之一並選擇 Apply

就我而言,我創建了一個運行配置,每當我嘗試運行它時,都會顯示錯誤。 在一些網站上搜索后,我編輯了運行配置並在 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 變量,然后它起作用了。

在此處輸入圖片說明

  1. 從系統中卸載舊的 Java(JDK/JRE)(保留一個(最新的)java 版本),如果環境變量 PATH/CLASSPATH 中有任何舊的 java jre/jdk 條目,也刪除
  2. Eclipse->Window->Preferences->Installed JREs->Add/Edit JDK from the latest installation
  3. Eclipse->Window->Preferences->Installed JREs->Execution Environment->左側選擇想要的java版本,點擊右側的復選框
  4. 如果您使用 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>
  5. 右鍵單擊 Eclipse 項目 Maven -> 更新項目

對我來說(在 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 解決了這個問題

您可以按照下面給出的任何一個進行操作。

  1. 項目--屬性--java構建路徑--jre系統庫--編輯--添加庫路徑為JDK
  2. 窗口首選項--java--安裝的JRE--JRE系統庫--添加庫並提供JDK文件夾的路徑
  3. 如果它被配置為指向 jre,你將不得不以某種方式指示 eclipse 使用 JDK 作為構建/編譯源 對於默認編譯器

如果以上方法仍然沒有幫助您面臨同樣的問題意味着您的自定義運行/調試配置中可能存在錯誤配置。

就我而言,我使用的是自定義 Maven 運行配置。 前面提到了 JRE。 一旦我將其更改為 JRK,它就會按預期工作。
在此處輸入圖片說明

我在使用 Eclipse Neon 時遇到了一個問題,即使我在 Preferences->Java->Installed JREs 下添加了正確的位置,工作區默認值實際上並沒有改變。 這是在我創建的一個新工作區中,用於處理代碼分支; 它最初設置為 JRE 位置而不是 JDK。 然而,即使在更改首選項之后,我也可以使用命令行進行構建,但在 Eclipse 中構建會產生無編譯器錯誤。 請參閱

Maven 包編譯錯誤

對於我必須手動編輯哪些 Eclipse 配置文件才能使 Eclipse 識別正確的工作區默認值的答案。 我仍然不知道為什么首選項設置沒有貫徹到新工作區的配置中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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