繁体   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