Maven错误:也许你是在运行JRE而不是运行JDK?

时间:2014-10-11 10:59:15

标签: java maven compiler-errors

我之前从未使用过Maven,而且我正按照说明进行操作here.当我运行命令时

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"

另外,我发现了this problem faced by someone else。但我不确定如何解决指定的解决方案?

进一步编辑。

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

22 个答案:

答案 0 :(得分:106)

我在java 8(ubuntu 16.04)中遇到了同样的问题,试图使用mvn命令行进行编译。

我验证了我的$JAVA_HOMEjava -versionmvn -version。一切似乎都可以指向/usr/lib/jvm/java-8-openjdk-amd64

默认情况下,java-8-openjdk-amd64似乎没有完全安装,只包含JRE(尽管名称为#34; jdk")。

重新安装JDK就可以了。

sudo apt-get install openjdk-8-jdk

然后将一些新文件和新文件夹添加到/usr/lib/jvm/java-8-openjdk-amd64,mvn可以再次编译。

答案 1 :(得分:41)

显然,它需要我的$ JAVA_HOME的lib文件夹中的tools.jar文件。我没有lib文件夹,所以我使用命令

重新安装了我的jdk
apt-get install openjdk-7-jdk openjdk-7-doc openjdk-7-jre-lib

此外,this link may help some people.

答案 2 :(得分:9)

  

这是因为运行jre而不是jdk,所以要安装jdk   以下步骤

在Amazon Linux / redhat中安装Java 8

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

谢谢

答案 3 :(得分:6)

对我而言,它的效果如下。 请查看JAVA_HOME环境变量,无论是指向JRE还是JDK。 如果它指向JRE,您将面临“也许您正在运行JRE而不是JDK”问题。如果这样改变了JDK的路径。

像这样修改,它对我有用。

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

答案 4 :(得分:4)

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

答案 5 :(得分:3)

只需添加有关设置位置的更多详细信息。主要原因是环境变量中的JAVA_HOME设置应该指向正确的JDK位置。

  
      
  1. 检查系统 - &gt;高级系统设置
  2.   
  3. 点击环境变量
  4.   
  5. 添加变量JAVA_HOME - &gt; &#34; C:\ Program Files \ Java \ jdk1.8.0_141;&#34;
  6.   
  7. 编辑&#34;路径&#34; - &GT;追加%JAVA_HOME%;现有文字。
  8.   

答案 6 :(得分:2)

这就是我解决问题的方法

项目的正确clik&gt;属性&gt; Java编译器(选择您正在使用的那个)

对我来说它是1.5,但我安装了1.8。所以我把它改成了1.8 ..而且它很有效!。

答案 7 :(得分:2)

问题语句 =在此环境中未提供编译器。也许您在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

答案 8 :(得分:1)

检查/ usr / bin是否有&#39; javac&#39;。如果没有,你已经安装了JRE&amp;必须安装jdk dev版本,如&#34; java-1.8.0-openjdk-devel.x86_64&#34;

答案 9 :(得分:1)

我正在使用centos,并且在目标为mvn的情况下运行install命令时遇到相同的错误。经过一番谷歌搜索后,我找到了运行以下命令的解决方案。

sudo yum install java-1.8.0-openjdk-devel

答案 10 :(得分:1)

这是我的自动解决方案...

这将向后跟随您的object_one可执行文件的符号链接(由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

答案 11 :(得分:0)

我遇到了同样的错误,我错过了User变量:JAVA_HOME和SDK的值 - 在我的案例中是“C:\ Program Files \ Java \ jdk-9.0.1”

答案 12 :(得分:0)

在AWS Linux AMI上安装SELECT DISTINCT (ip) FROM table1 a INNER JOIN table1 b ON a.ip = b.ip WHERE a.check_status = 'FAIL' AND a.check_type = 'check1' AND b.check_status = 'PASS' AND b.check_type = 'check2'; 包后,我遇到了同样的问题。我做出的错误假设是,因为文件以 openjdk 结尾,所以它将是jdk版本。不是这种情况。

openjdk install page清楚地解释了一切。

  

java-1.8.0-openjdk包只包含Java Runtime   环境。如果要开发Java程序,请安装   java-1.8.0-openjdk-devel包。

如果您已经安装了java-1.8.0-openjdk软件包,只需保留它和JAVA_HOME值(如果它适用于JRE并安装java-1.8.0-openjdk-devel)使用java-1.8.0-openjdk打包。

答案 13 :(得分:0)

即使JAVA_HOME指向JDK,我也遇到了问题。花了一些时间才弄清楚为什么会引发异常。

问题是我在窗口计算机上将JAVA_HOME设置为管理员用户。您需要将指向右侧JDK的JAVA_HOME环境变量添加到用户个人资料环境变量设置

答案 14 :(得分:0)

要解决我在Linux上没有JDK的问题,我只需下载JDK并上传到Linux服务器,然后键入: 焦油xvf jdk-8u45-linux-x64.tar.gz

答案 15 :(得分:0)

我面临着同样的问题。为了解决该问题,我需要将JDK放在PATH中的JRE之前。

答案 16 :(得分:0)

右键单击项目文件夹(Maven one),选择属性,然后从属性窗口中再次选择Java Compiler并查看针对编译器合规性级别选择的内容,并确保它与jre的版本相同。在我的情况下,我有1.8,但是根据编译器合规性级别选择了1.5。选择1.8后,构建成功,没有出现此错误。

答案 17 :(得分:0)

如果上述解决方案不起作用,则尝试将Java路径放在环境变量路径中的maven之前。它对我有用。

%JAVA_HOME%\bin

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

答案 18 :(得分:0)

在“已安装的JRE”路径中,查看是否有指向您的JDK路径的条目。 如果没有,请单击“编辑”按钮,然后放置您为JAVA_HOME环境配置的路径:

Eclipse Path: Window → Preferences → Java → Installed JREs

答案 19 :(得分:0)

我在 Eclipse 的 Maven 项目中遇到以下错误

错误:[错误] 此环境中未提供编译器。也许您在 JRE 而不是 JDK 上运行?

我按照以下解决方案解决了

解决方案: Eclipse->项目->右键单击->构建路径->配置构建路径->添加jdk路径(例如: C:\Program Files\Java\jdk1.8.0_45)

注意:eclipse项目中较早的Build路径指向的是jre路径

并在高级系统设置中的环境变量中添加jdk路径

变量名:JAVA_HOME

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

并且还要确保在 eclipse 中指向的是 (jdk path-> C:\Program Files\Java\jdk1.8.0_45 )

Windows -> Preferneces -> Java -> 安装 JRE

答案 20 :(得分:0)

当 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`

答案 21 :(得分:-1)

java 虚拟机太多?

使用命令进行检查:

<块引用>

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

uninstall java click here