簡體   English   中英

mvn clean package error: 此環境沒有提供編譯器。 也許您在 JRE 而不是 JDK 上運行?

[英]mvn clean package error: No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

mvn clean package 時出現以下錯誤。我正在命令行上編譯它。

>mvn -f myapp/pom.xml clean package

這是我的命令,下面是錯誤。 有人可以幫我解決這個問題嗎

[INFO] Compiling 1 source file to C:\VaibhavNandkule\myapp\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
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.170 s
[INFO] Finished at: 2020-01-24T19:20:14+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project myapp: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

所以我遇到了同樣的問題,終於能夠解決它。 問題是我的 ~/.mavenrc 文件指向了錯誤的 java 路徑。我已經將我的 java_home 定義為JAVA_HOME= /usr/libexec/java_home -v 1.8 鍵入命令: /usr/libexec/java_home -V 它會顯示這樣的東西

Matching Java Virtual Machines (2):
1.8.261.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_261 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home

現在問題是將/usr/libexec/java_home -V定義為它選擇此/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home而不是/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home的 java 路徑/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home 在 mavenrc 中將路徑更改為/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home (或者在您定義了 java 路徑的情況下)修復了此問題

對於 Mac,更新 bash_profile 中的“Java SE 8”/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home”。

執行以下命令:

vi ~/.bash_profile

更新 JAVA_HOME

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home

. ~/.bash_profile

雖然在 pom.xml 中設置 JDK 的絕對路徑有效,但這不是設置 java 的可移植方式。 當您提交並推送該 pom.xml 時,您的同事不會感激。

對於 Maven,您必須確保 JAVA_HOME 指向 JDK 的根目錄。

set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_171"

因為你在 Windows 上,你也可以在標准環境變量面板中設置它。

您可以通過運行mvn -version來驗證您的配置:

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: C:\tools\apache-maven-3.6.3\bin\..
Java version: 1.8.0_232, vendor: Amazon.com Inc., runtime: C:\tools\java\jdk1.8.0_232\jre
Default locale: fr_CA, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

最后,它對我有用。 我必須在我的 pom.xml 中添加以下代碼。

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <fork>true</fork>
        <executable>C:\Program Files\Java\jdk1.8.0_171\bin\javac.exe</executable>
    </configuration>
</plugin>

暫無
暫無

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

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