2014-01-13 61 views
57

我是Java企業開發領域的相對新手。我的組織的Java專家無限期休假,我被分配了維護他開發的一些Java應用程序的任務。在他離開之前,他在我的電腦上安裝了Eclipse [Kepler SR1]和Maven,它似乎工作正常。Eclipse/Maven錯誤:「在此環境中未提供編譯器」

現在我已經準備好部署我第一次修改,需要運行一個Maven install,但我無法得到它的工作 - 我得到以下輸出我的控制檯上:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project mrpapp: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

,但我絕對是am運行JDK而不是JRE。我仔細檢查了我的$JAVA_HOMEC:\Program Files (x86)\Java\jdk1.7.0_60),它確實在其bin目錄中有一個javac.exe

我附上我的pom.xml文件的副本供您審查。我確信那裏有東西會導致問題,但我不確定它會是什麼。我正在使用Windows 7 64位筆記本電腦,如果您需要任何進一步的平臺/環境信息我也可以提供。

任何幫助將不勝感激。

+0

當你點擊Window-> Preferences-> Java-> Compiler時,它在Eclipse中說了什麼?如果不是這樣,你可能還會檢查你的eclipse.ini文件,以確保它沒有指向java jre install。 –

+4

假設是Eclipse構建失敗,是否嘗試過直接從命令行運行Maven命令(例如'mvn install')?這兩個問題之一可能也有幫助:http://stackoverflow.com/questions/19655184/no-compiler-is-provided-in-this-environment-orhaps-you-are-running-on-a-jre-ra和http://stackoverflow.com/questions/15220392/maven-package-compilation-error – andersschuller

+1

打開一個命令窗口並鍵入'javac -v'它是否工作? – Henry

回答

126

轉到窗口→首選項→Java→已安裝的JRE。

然後看看是否有指向你JDK路徑的條目,如果沒有,點擊編輯按鈕,並把你配置的環境的路徑設置爲JAVA_HOME

+4

謝謝你們兩個!我去了Window-> Preferences-> Java-> InstalledJREs,發現在我的默認下面列出了不同的路徑。我刪除了那個,當我嘗試Maven Install時,它運行時沒有錯誤。問題解決了! –

+1

爲我工作。即使有jre8位置(程序文件(x86))。我已經改變了jre7 ..工作。 –

+0

它適合我,但它真的很奇怪..!任何人發現另一個可能的修復? – Dwhitz

2

請檢查您是否已經在你的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> 
9

我試過所有的東西;爲我工作的是:

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

對!它爲我工作後,我配置了Eclipse的偏好與JDK和重建項目,這個問題仍然存在。上面的解決方案工作。 –

2

如果有人在Ubuntu上運行Eclipse和有這樣的問題,我已經通過以下步驟找到了答案:

  1. Eclipse的>窗口 - >首選項。
  2. 選擇已安裝的JRE - >添加
  3. 選擇standardVM。
  4. JRE home:按下[Directory ..]按鈕。
  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。
+0

8和9救了我的生活:)謝謝(電力故障後得到了問題) – GobiRan

2

我在使用Jdk1.8_92時也遇到過類似的錯誤。 對我而言,我發現我的jdk文件夾中缺少tools.jar。 由於我在控制檯中運行,我無法嘗試其他人所建議的eclipse選項。

我安裝了jdk-8u92-windows-x64。 我嘗試了所有選項後,發現jdk1.8.0_92/lib文件夾中缺少tools.jar。 我從我早期版本的java複製tools.jar。 然後它能夠​​編譯。

1

在我的情況下,我創建了一個運行配置,每當我嘗試運行它時,都會顯示錯誤。在某些網站上搜索後,我編輯了運行配置並在JRE選項卡下選擇了運行時JRE作爲「工作區默認JRE」,我已經配置該工作區指向我的本地Java JDK安裝(例如C:\ Program Files(x86) \的Java \ jdk1.8.0_51)。這解決了我的問題。也許它可以幫助那裏的人。

6

Screen_shot 將'tools.jar'添加到已安裝的JRE中。

  1. Eclipse-> window-> preference。
  2. 選擇安裝JREs->編輯
  3. 添加外部JAR
  4. 從Java/JDKx.x/lib文件夾中選擇的tools.jar。
  5. 單擊Finish
0
  1. 卸載以前的Java(JDK/JRE)從系統中(保持一個(最新)的Java版本),同時刪除如果在環境變量PATH/CLASSPATH任何舊的Java JRE/JDK條目
  2. Eclipse-> Window-> Preferences->安裝JREs->從最新安裝中添加/編輯JDK
  3. Eclipse-> Window-> Preferences-> Installed JREs-> Execution Environment->選擇所需的java版本然後點擊右側的複選框
  4. 如果你正在使用maven,請在plugins標籤內部在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右鍵 - >更新項目
0

對我來說(在Windows 10),我得到錯誤「沒有編譯器在這種環境中提供」在Windows命令提示符當我跑mvn install。該修復程序將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

2

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

我曾嘗試指定tools.jar作爲外部庫,以及在eclipse中將jdk設置爲-vm。這些都不起作用。

選擇JDK如上述那樣的特技默認執行的env ..

  1. Eclipse的>窗口 - >優先 - > Java的>已安裝JREs->執行環境。
  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> 
0

在Eclipse-> Window-> Preferences-> Installed JRE中檢查pom.xml中的java版本和jre版本。在我的情況下,pom.xml有不同的版本(它在使用1.7時使用eclipse時爲1.8)。將pom.xml中的版本修復爲1.7。

0

如果你是在命令行窗口工作Eclipse之外
確保你有正確的JAVA_HOME和該目錄包含通過在命令窗口輸入以下命令編譯:

dir %JAVA_HOME%\bin\javac.* 
1

Installed JRE 在我的情況下,我通過刪除重複名稱來解決問題,我只保留一個名稱:jdk.1.8.0_101

0

1.轉到Windows - >首選項 - > Java - >安裝JREs-- >執行環境

2.選擇您當前在「執行環境」框中使用的Java版本。 因此,在「兼容JRE」框中,您可以看到「jre1.8.0_102 [perfect match]」(如果您的java版本爲1.8)。然後嘗試使用maven構建。

1

居然也得到了同樣的問題,指出Java來bin文件夾在eclipse中使用: windows> preferences> java>已安裝的JRE>刪除任何現有的JRE並將其指向您的java bin文件夾(主要在C:\ Program Files \ Java \ jdk1.8.x_xx下)。

然後運行maven安裝它應該工作。

2

添加此配置在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> 
0

要檢查您的Maven使用的東西,打開命令行,然後鍵入:

mvn –version 

驗證JAVA_HOME指JDK家,而不是一個JRE

在Windows上:

轉到系統屬性 - >高級系統設置 - >高級 - >環境變量和系統變量部分選擇JAVA_HOME變量,然後單擊編輯 具有以下 變量名稱填寫表格:JAVA_HOME 變量值:

在Unix上:

export JAVA_HOME=<ABSOLUTE_PATH_TO_JDK> 

看到this link

0

請確保您有%JAVA_HOME%通過在命令提示符處鍵入echo %JAVA_HOME%設置。如果您沒有這個設置,那麼您需要將您的Java路徑添加到Window的環境變量。

相關問題