首页 文章

此环境中未提供编译器 . 也许您运行的是JRE而不是JDK?

提问于
浏览
496

我正在使用m2eclipse在Eclipse中编译一个项目 . 我在Eclipse中设置JDK路径,如下所示:

Windows-->preferences-->installed jres--> jdk1.7.xx  path

但这显示出错误

[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.424s
[INFO] Finished at: Tue Oct 29 15:21:01 IST 2013
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-   plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

27 回答

  • 5

    我遇到了同样的问题,我犯的错误是我只在路径var中添加了jre路径,而不是jdk路径 . 当jdk路径被添加到路径并构建maven项目时它的工作完美 . 谢谢所有

  • 0
  • 1

    试试这个 .

    <build>
    ...
        <plugins>
        ...
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <fork>true</fork>
                    <executable> path to jdk \bin\javac.exe</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  • 32
    • 在Eclipse IDE上,进入 Window > Preferences > Java > Installed JREs >并检查 installed JREs . 你应该有一个JDK条目 .

    • 选择执行环境,如下所示 . 点击 OK

    • 然后在项目上 Right-Click - > Maven - > Update Project

    此外,您可能需要更改Maven JRE(请参阅@ jlars62答案),如下所示 . 转到运行 - >运行配置,选择我正在运行的Maven Build(从左侧面板) . 然后,我单击了JRE选项卡并选择了Workspace默认JRE选项

    enter image description here

  • 30

    对我来说,这正是日食的主人所抱怨的

    enter image description here

    所以,我按 Edit 按钮并改变JDK文件夹的路径,然后清理项目,一切都开始工作

  • 770

    对我来说,在我对pom.xml进行此更改之前没有任何工作:

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

    其他说明

    我可以看到m2e正在JRE中执行,而不是JDK . 我没有做任何改变,包括将其添加到eclipse.ini:

    -vm
    C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
    

    最后,我从来没有在JDK中执行m2e,但是明确地设置Java编译器(如上所述)就可以了 .

  • 1
    • JAVA_HOME 环境变量设置为JDK根文件夹 - 如果运行命令行或maven( mvn )则需要 .

    • (搜索谷歌 JAVA_HOME 了解更多信息)

    • 在Java编译器部分的项目属性中,选择所需的JDK - 如果直接从eclipse运行

  • 0

    In my case it was solved by doing this:

    转到“运行时配置”并将JRE配置为JDK .

    Select the right JDK for your Runtime

    Select default JRE

    我复制了答案以防万一由于某种原因被删除,但来源是here

  • 9

    当我试图在eclipse中进行maven构建时,我遇到了这个错误 .

    对我来说,答案是 Run - > Run Configurations ,选择我正在运行的 Maven Build (从左侧面板) . 然后,我单击了 JRE 选项卡并选择了选项 Workspace default JRE

  • 0

    转到Windows - >首选项 - > Java - >已安装的JRE

    可能已经添加了jre
    enter image description here

    单击添加 - >标准VM - >下一步 - >目录

    并在我的案例路径中浏览JDK是 C:\Program Files\Java\jdk1.8.0_111

    然后点击完成 .

    你会看到像这样的窗口
    enter image description here

    选择JDK - >应用 - >确定

    你完成了 .

  • 112

    如果jaipster的答案不起作用的另一种选择是去:
    窗口>首选项> Java>已安装的JRE

    然后编辑jre,使其指向jdk而不是jre(jre包编辑器中提交的jre home)

    这对我有用 .

  • 79

    我尝试了以上所有,但仍然得到相同的错误消息 .

    在我的例子中,实际的JRE在项目特定的构建路径中被错误地用作JRE系统库,这显然超越了这里讨论的所有其他设置 .

    如果是这样,请尝试以下方法:

    • 打开Java Build Path的项目特定库:右键单击"Project > Build Path > Configure Build Path..."并选择"Libraries" tab .

    • 选择"JRE System Library"条目并按"Remove" .

    • 点击"Add Library..." .

    • 弹出一个向导 . 选择"JRE System Library"并按"Next >" .

    • 现在选择正确的JDK(在我的情况下"Workspace default JRE",我使用JDK配置) .

    • 点击"Finish"关闭向导 .

    • 按"OK"关闭"Properties"对话框 .

  • 1

    我在尝试使用 mvn clean install 构建项目应用程序的jar文件时遇到了同样的问题,尽管应用程序在从Eclipse运行时工作正常 .

    问题确实太天真了,我没有设置 JAVA_HOME 环境变量 . 我所要做的就是将JAVA_HOME环境变量设置为JDK目录,确保它不是 "\bin" 而没有 semi-colon ";" .

    enter image description here

    我的理解如下:

    该应用程序在Eclipse中运行良好,因为JRE系统库引用了JDK文件夹中的JRE而不是没有JDK的外部JRE文件夹 . [正如其他答案所解释的那样]

    此配置不适用于我们在命令提示符下运行的maven命令 . 它仍然会查找JAVA_HOME变量来访问JRE系统库,当找不到它时,它会引用没有JDK的外部JRE文件夹 .

  • 7

    如果从 cmd 运行 Maven 命令,请确保在运行命令之前设置jdk路径 . 就我而言,我创建了一个包含以下内容的 .bat 文件:

    set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
    start cmd.exe /k "cd c:\aem_proj\sis\aau"
    
  • 6

    有几个选项可供指定 .

    步骤:项目资源管理器中的项目正确转到运行 - >运行配置 - >单击Maven构建 - >单击构建配置/或创建新配置 . 您将在下面看到窗口作为给定的快照,单击那里的JRE选项卡 .

    您看到有3个选项1)工作区默认JRE 2)执行环境3)备用JRE
    enter image description here
    1)工作区默认JRE设置在顶部的'Window'菜单 - >首选项 - > Java - >已安装的JRE中 - 您可以添加您的jdk
    enter image description here
    2)执行环境jdk可以在@ksnortum提到的pom.xml中设置

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

    3)备用JRE可用于从目录中选择jdk

  • 3

    我遇到了同样的问题,我只是将 JAVA_HOME 添加到 environment variables .

    env var

    • 如果你正在使用eclipse,请参考https://stackoverflow.com/a/21279068/6097074

    • 如果您正在使用intellij,只需在项目目录中添加 JAVA_HOME 打开命令提示符并运行 mvn clean install (不要使用intellij终端) .

  • 4

    对我来说,JRE位于JDK路径之前的PATH环境变量中

    • C:\ ProgramData \ Oracle \ Java \ javapath

    • C:\ env \ jdk1.8.0_151 \ bin

    所以我删除了1.可能交换它们也会修复它 .

  • 6

    对于这个问题还有另一个可能的答案,我可能是唯一一个愚蠢地偶然发现这个问题的人,但我认为值得补充,因为我已经没有其他答案,因为我已经正确地设置了这些设置 .

    安装JDK时,安装程序会询问您要安装文件的位置 . 默认情况下,在Windows上,这类似于C:\ Program Files \ Java \ jdk1.8.0_74(或您正在安装的任何版本) .

    然后它会要求您提供一个安装JRE的目录,默认情况下是C:\ Program Files \ Java \ jre1.8.0_74 .

    注意,一个是 jdk 1.8.0_74,另一个是 jre 1.8.0_74

    我急于求成,并且认为安装程序两次问我同样的问题,将我的JDK和JRE安装位置设置为D:\ devtools \ jdk \ jdk1.8.0_74,导致安装程序用JRE覆盖JDK . 这导致(除其他外)我的JDK bin中缺少javac.exe,以及OP在我所有的maven构建中报告的相同错误 .

  • 0

    我有一个解决方案 .

    这个问题最常见的解决方案是将 jdk location 更改为我的 Installed JREs 而不是 JRE location ,但这一次没有解决我的问题 .

    所以我做了以下解决问题 . 展开 Installed JREs 选项卡,您将找到 Execution environments 选项卡 .

    单击您喜欢的执行环境 . 就我而言,它是 JAVASE-1.8 . 它显示了2个选项 . JDK and JRE . 在那里选择 JDK ,问题就解决了 .

    enter image description here

  • 9

    我只是浪费了3个小时来解决这个问题,直到我成功完成它 . 发出mvn编译命令时,我在Eclipse终端中遇到此错误:

    No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    所以我在这里读到我必须创建一个名为JAVA_HOME的新系统变量,并使其指向jdk安装文件夹 . 但是这会产生另一个错误:

    Source option 1.5 is no longer supported. Use 1.6 or later

    无法找到这个修复...所以...

    So the fix to make it all go away is install Java SE Development Kit 8! 我正在使用9认为如果它是最新的那么它必须更好......

    无论如何...

    希望这可以避免一些有点麻烦的流浪者 .

  • 3

    在我的情况下,我有系统变量路径有“C:\ ProgramData \ Oracle \ Java \ javapath”位置 .

    在“C:\ ProgramData \ Oracle \ Java \ javapath”中的位置java,javaw只有那里 . 所以我得到了同样的错误 .

    删除“C:\ ProgramData \ Oracle \ Java \ javapath”文件夹中的所有文件后,我的错误得到了解决 .

  • 23

    当我创建一个新的EC2 ubuntu 16.04实例并且已经安装了Java并且在运行mvn clean包时,我遇到了同样的错误,我遇到了这个问题,下面的解决方案对我有用 .

    如果您正在使用Ubuntu服务器,然后你可以尝试再次安装Java,为此你可以使用这个答案How to install the JDK on Ubuntu Linux

  • 0

    我做了以下更改,它对我有用 . 希望它可以帮助某人 .
    enter image description here

  • 1

    除了上面的回答之外,我可以说只是尝试从终端(Eclipse之外)运行Maven . 通过这种方式,如果它是从外部构建而不是在Eclipse中构建,那么您可以理解问题应该在Eclipse中 .

  • 2

    关于这个问题有几个答案,但都与JDK的正确路径配置有关,但只有JRE才能解决这个问题 .

    我们只需要使用部署程序集来配置Java EE Project的打包war文件的路径,然后重新运行maven-install .

    使用部署程序集的步骤:

    • 右键单击Jave EE项目 - >单击属性 - >单击部署程序集

    • 单击添加按钮 - >单击文件系统中的存档 - >单击下一步 - >单击添加 - >转到.m2 \ respository目录并搜索生成的war文件 - >选择战争文件 - >单击打开按钮 - >单击应用 - >确定

    • 右键单击项目 - >单击“运行方式”下的“Maven安装”

    这将成功构建您的项目,而不会出现任何编译器错误 .

    希望这能解决没有JDK的问题 .

  • 2

    你错过了任何maven构建吗?

    除了上面的JRE更改 . 我仍然遇到类似的问题 . 我添加它后工作正常,我缺少JUnit依赖 .

    希望这会有所帮助 .

  • 97

    我的回答与Windows环境中的Eclipse有关 .

    我去了Preferences - > Java - > Installed JREs我没有在这里看到JDK . 我这里只看到了JRE . 所以我添加了JDK,然后取消选中了JRE . 然后检查JDK . 然后我使用Run Configurations运行POM文件 . 选择选项卡JRE并选择“工作区默认...”选项以下是图像

    enter image description here

    enter image description here

相关问题