簡體   English   中英

Maven 錯誤:也許您在 JRE 而不是 JDK 上運行?

[英]Maven error :Perhaps you are running on a JRE rather than a JDK?

我以前從未使用過 Maven,我正在按照此處的說明進行操作。 當我運行命令時

mvn integration-test -Pamp-to-war

它最初下載了一大堆依賴項,最后顯示,

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

我在 ubuntu 13.04。

如果你有什么想讓我告訴你的,請告訴我。 謝謝。

編輯

當我echo $JAVA_HOME我得到/usr/lib/jvm/java-7-openjdk-i386/

當我執行mvn -version

我明白了

Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-i386/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.8.0-26-generic", arch: "i386", family: "unix"

另外,我發現了其他人面臨的這個問題 但我不知道go 是如何指定的解決方案?

進一步編輯。

kraken@kraken-Inspiron-1545:/usr/lib/jvm/java-7-openjdk-i386$ ls -l
total 12
drwxr-xr-x 2 root root 4096 Sep  9 10:44 bin
lrwxrwxrwx 1 root root   41 Jul  4  2013 docs -> ../../../share/doc/openjdk-7-jre-    headless
drwxr-xr-x 5 root root 4096 Oct 13  2013 jre
drwxr-xr-x 4 root root 4096 Oct 13  2013 man

我一直在使用Java 8(ubuntu 16.04)遇到相同的問題,嘗試使用mvn命令行進行編譯。

我驗證了我的$JAVA_HOMEjava -versionmvn -version 指向/usr/lib/jvm/java-8-openjdk-amd64似乎一切正常。

默認情況下,似乎未完全安裝java-8-openjdk-amd64,而僅包含JRE(盡管其名稱為“ jdk”)。

重新安裝JDK可以解決問題。

sudo apt-get install openjdk-8-jdk

然后,將一些新文件和新文件夾添加到/usr/lib/jvm/java-8-openjdk-amd64並且mvn可以再次編譯。

顯然,它需要$ JAVA_HOME的lib文件夾中的tools.jar文件。 我沒有lib文件夾,所以我使用命令重新安裝了jdk

apt-get install openjdk-7-jdk openjdk-7-doc openjdk-7-jre-lib

另外, 此鏈接可能會對某些人有所幫助。

這是因為運行jre而不是jdk,要安裝jdk,請執行以下步驟

在Amazon Linux / Redhat中安裝Java 8

-> yum search java | grep openjdk yum search java | grep openjdk

-> yum install java-1.8.0-openjdk-headless.x86_64

-> yum install java-1.8.0-openjdk-devel.x86_64

-> update-alternatives --config java #pick java 1.8並按1

-> update-alternatives --config javac #pick java 1.8並按2

謝謝

對我而言,它的工作原理如下。 請查看JAVA_HOME環境變量,它是否指向JRE或JDK。 如果它指向JRE,您將面臨“也許您正在JRE而不是JDK上運行”的問題。 如果是這樣,請將路徑更改為JDK。

這樣修改,對我有用。

JAVA_HOME C:\\ Program Files \\ Java \\ jdk1.8.0_31

當 JAVA_HOME 未正確設置時出現此錯誤。

我試過這個命令

$ /usr/libexec/java_home -V

這給了 3 個虛擬機

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

在這種情況下,需要特定版本。

這個

$ /usr/libexec/java_home -v1.8
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

不同於

$ /usr/libexec/java_home -v1.8.0
/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home

因此解決方案是設置~/.bash_profile

export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0`

在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>

只需添加更多有關設置位置的詳細信息。 主要原因是環境變量中的JAVA_HOME設置應指向正確的JDK位置。

  1. 檢查系統->高級系統設置
  2. 單擊環境變量
  3. 添加變量JAVA_HOME->“ C:\\ Program Files \\ Java \\ jdk1.8.0_141;”
  4. 編輯“路徑”->附加%JAVA_HOME%; 到現有文字。

問題陳述 =在此環境中未提供編譯器。 也許您是在JRE而不是JDK上運行?

請按如下所示設置環境變量以解決該問題

變量名稱 :JAVA_HOME

變量值 :C:\\ Program Files \\ Java \\ jdk1.8.0_202

變量名稱 :M2_HOME

變量值 :C:\\ Program Files \\ apache-maven-3.6.0

此外 ,在“ 系統變量 ”中添加Java和maven路徑,如下所示:

  1. C:\\ Program Files \\ Java \\ jdk1.8.0_202 \\ bin
  2. C:\\ Program Files \\ apache-maven-3.6.0 \\ bin

這就是我解決問題的方式

右鍵單擊項目>屬性> Java編譯器(選擇您正在使用的那個)

對我來說是1.5,但我安裝了1.8。 所以我將其更改為1.8 .. voilla起作用了!

檢查/ usr / bin是否具有'javac'。 如果尚未安裝,則必須安裝JRE並必須安裝jdk開發人員版本,例如“ java-1.8.0-openjdk-devel.x86_64”

在AWS Linux AMI上安裝java-1.8.0-openjdk軟件包后,我遇到了相同的問題。 我做出的錯誤假設是,因為文件以openjdk結尾,所以它將是jdk版本。 不是這種情況。

openjdk安裝頁面清楚地說明了所有內容。

java-1.8.0-openjdk軟件包僅包含Java運行時環境。 如果要開發Java程序,請安裝java-1.8.0-openjdk-devel軟件包。

如果您已經安裝了java-1.8.0-openjdk軟件包,請保留它和JAVA_HOME值(如果它適用於JRE),然后使用yum install java-1.8.0-openjdk-devel -y安裝java-1.8.0-openjdk-devel軟件包。 yum install java-1.8.0-openjdk-devel -y

我面臨着同樣的問題。 為了解析,我需要將JDK放在PATH中的JRE之前。

我正在使用centos並使用centosinstall運行mvn命令時遇到相同的錯誤。 經過一番谷歌搜索后,我發現解決方案可以運行以下命令。

sudo yum install java-1.8.0-openjdk-devel

在 Installed JREs path 中查看是否有指向您的 JDK 路徑的條目。 如果沒有,請單擊“編輯”按鈕並輸入您配置JAVA_HOME環境的路徑:

Eclipse Path: Window → Preferences → Java → Installed JREs

針對最近更新到 MacOS Monterey 的 Mac 用戶的解決方案

如果您最近將 macOS 更新到 Monterey 后遇到此問題,請嘗試運行此命令:

sudo rm -fr /Library/Inte.net\ Plug-Ins/JavaAppletPlugin.plugin

之后,像往常一樣繼續使用 maven。 希望這有幫助:)

右鍵單擊項目文件夾(Maven之一),選擇屬性,然后從屬性窗口中再次選擇Java Compiler,然后查看針對編譯器合規性級別選擇的內容,並確保它與jre版本相同。 在我的情況下,我有1.8,但針對編譯器合規性級別選擇了1.5。 選擇1.8后,構建成功,沒有此錯誤。

我遇到了相同的錯誤,但缺少用戶變量:JAVA_HOME和SDK的值-在我的情況下為“ C:\\ Program Files \\ Java \\ jdk-9.0.1”

即使JAVA_HOME指向JDK,我也遇到了問題。 花了一些時間弄清楚為什么會引發異常。

問題是我在窗口計算機上將JAVA_HOME設置為管理員用戶。 您需要在用戶配置文件環境變量設置中添加指向正確JDK的JAVA_HOME環境變量。

為了解決我在Linux上沒有JDK的問題,我只需下載JDK並上傳到Linux服務器,然后鍵入:tar xvf jdk-8u45-linux-x64.tar.gz

我在Eclipse Maven項目中遇到相同的問題,我所做的只是
右鍵點擊項目
Maven- > 更新項目
或按ALT + F5

如果上述解決方案不起作用,則嘗試將Java路徑放在環境變量路徑中的maven之前。 它為我工作。

%JAVA_HOME%\\bin

C:\\Program Files\\apache-maven-3.6.1-bin\\apache-maven-3.6.1\\bin

這是我的自動解決方案...

這將遵循您的javac可執行文件的符號鏈接(由yum和/或alternatives --config java )向后查找JAVA_HOME (將其扔到/etc/profile ):

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed 's:/bin/javac$::')

如果您想要一個穩定的路徑(在啟動時刷新),請啟動以下命令:

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed 's:/bin/javac$::')
ln -sfn "${JAVA_HOME}" /usr/lib/jvm/jdk-current

我有點震驚,后者仍然沒有被alternatives

我在 Eclipse 的 Maven 項目中遇到以下錯誤

錯誤:[錯誤] 此環境中未提供編譯器。 也許您在 JRE 而不是 JDK 上運行?

我按照以下解決方案解決了它

解決方法:Eclipse->Project->右鍵->Build Path->Configure Build Path->Add jdk path(Eg: C:\Program Files\Java\jdk1.8.0_45)

注意:eclipse 項目中的早期構建路徑指向 jre 路徑

並且還在高級系統設置的環境變量中添加jdk路徑

變量名稱:JAVA_HOME

變量值:C:\Program Files\Java\jdk1.8.0_45

並確保在下面的 eclipse 中指向 (jdk path-> C:\Program Files\Java\jdk1.8.0_45)

Windows -> 首選項 -> Java -> 安裝的 JRE

java 虛擬機太多?

使用命令進行檢查:

/usr/libexec/java_home -V
java-版本
mvn-版本

卸載 java 點擊這里

暫無
暫無

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

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