Maven无法找到Javac编译器:

时间:2012-09-25 14:42:01

标签: java maven javac

当我尝试生成war文件时,它会显示一些错误,如

[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar

当我echo %path%显示

 C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\b
in;C:\Program Files\Notepad++\;%JDK_HOME%

当我做echo %JDK_HOME%

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin

当我的环境变量是jdk时,我不知道maven为什么会引用jre。我还将已安装的JRE更改为jdk1.6。

17 个答案:

答案 0 :(得分:148)

仅在Eclipse设置中

它有4个步骤TODO。

步骤1:右键单击Eclipse项目属性

第2步:Java构建路径 - >库

步骤3:选择JRE系统库 - >点击修改按钮 - >单击已安装的JRE ...按钮

步骤4:将JRE编辑为设置JRE Home = JAVA_HOME

<强> ScreentShot:

enter image description here

答案 1 :(得分:35)

转到窗口 - &gt;偏好... - &gt; Java - &gt;已安装的JRE

编辑JRE Home = JAVA_HOME或JAVA_HOME \ jre

例如,如果您使用安装在C:\ Program Files中的jdk1.6.0_04,请执行以下更改:

C:\ Program Files \ Java \ jdk1.6.0_04 \ jre或C:\ Program Files \ Java \ jdk1.6.0_04而不是默认位于C:\ Program Files \ Java \ jre7

答案 2 :(得分:4)

有同样的问题,但在我的情况下,目录eclipse指出JRE是JDK。所以,我搜索了那些tools.jar并且在那里。

我做了

  • Java构建路径&gt;&gt;库
  • JRE系统Lybrary&gt;&gt;修改
  • 已安装的JRE&gt;&gt;点击我的jdk&gt;&gt;修改
  • 添加外部罐子&gt;&gt;的tools.jar

然后编译好

答案 3 :(得分:3)

这是一个Eclipse问题。当我尝试使用

从命令行构建它时
mvn package

它运作良好。

答案 4 :(得分:2)

JDK_HOME变量应始终指向jdk的基础目录,而不是bin目录:

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04

已定义,修复您的路径

C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\bin;C:\Program Files\Notepad++\;%JDK_HOME%\bin

答案 5 :(得分:2)

我有同样的错误,因为JUNIT版本,我有3个       3.8.1我已经改为4.8.1。

所以解决方案是

你必须去POM,并确保你的依赖看起来像这样

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>

答案 6 :(得分:2)

听起来您将JDK_HOME定义为用户变量并将PATH定义为系统变量,反之亦然 - echo %PATH%不应包含未解析的变量,例如...;%JDK_HOME%

确保%JDK_HOME%\bin路径在PATH变量上,未解析,即使您必须明确地放置路径。

答案 7 :(得分:1)

我尝试了以上所有建议,但这些建议对我来说并不奏效,但我发现了如何解决该错误的方法。

以下步骤使项目成功编译:

在项目浏览器中,右键单击项目,选择“属性” 在右侧的树中,转到Java构建路径。选择选项卡“库”。 点击“添加库”。 选择JRE系统库。点击下一步。 选择单选按钮Alternate JRE。点击“已安装的JRE”。选择具有正确版本的JRE。单击“应用”,然后关闭。在下一个屏幕中,单击“完成”。 在属性窗口中,单击“应用”并关闭。 在项目资源管理器中,右键单击pom.xml并选择run as> maven build 在目标文本框中,输入“安装”。点击运行。

在我看来,这使得该项目得以成功构建。

答案 8 :(得分:0)

对于其他在Eclipse中即使将路径正确设置为JDK仍会遇到此问题的人,您需要从已安装的JRE中删除其他JRE。

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

分别选择未使用的JRE,然后删除

对我有用。

答案 9 :(得分:0)

目前的答案都没有帮助我。我们得到类似的东西:

SKPaymentQueue.default().transactions

发生这种情况是因为Java安装已确定它是JRE安装。期望在JRE子目录的上方中有JDK内容,因此路径中的[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin: #.#.#:compile (default-compile) on project Streaming_Test: Compilation failure [ERROR] Unable to locate the Javac Compiler in: [ERROR] /opt/java/J7.0/../lib/tools.jar 。我们的../libtools.jar中,而不在$JAVA_HOME/lib/tools.jar中。

不幸的是,我们没有选择在我们的操作系统上安装JDK的选项(不要问),所以这不是一个选择。我通过将以下内容添加到行家$JAVA_HOME/../lib/tools.jar中来解决了这个问题:

pom.xml

通过将可执行文件指向正确的位置,至少可以避免编译失败。

答案 10 :(得分:0)

尽管以上针对该问题的一些非Eclipse答案没有提及Eclipse,但它们需要更改路径变量。另一种方法是使用命令行选项java.home,例如:

mvn package -Djava.home="C:\Program Files\Java\jdk1.8.0_161\jre"

请注意最后的\ jre-令人惊讶的必要性。

答案 11 :(得分:0)

如果您正在执行上述所有可能混淆的步骤,而我们的问题只是缺少tools.jre,那么只需通过以下步骤添加tools.jre,问题就解决了。

第1步:在eclipse中转到Windows - &gt;偏好

第2步:Java - &gt;已安装的JRE(双击它)

第3步:点击修改按钮 - &gt;单击“添加外部JAR”

步骤4:现在选择tools.jar path

现在应用更改并且工作正常。

Here is screenshoot

答案 12 :(得分:0)

这取决于Maven版本。当您安装较新版本的Maven时,不会出现此错误。您还可以使用tools.jar文件lib / tools.jar添加另一个目录 - 它也解决了这个问题。

答案 13 :(得分:0)

我可以通过以下步骤解决:

  

右键单击项目选择Build path - &gt;配置构建路径 - &gt;   选择Libraries选项卡 - &gt;然后选择JRE系统库[版本你   对我来说它是JavaSE-1.7] - &gt;点击编辑按钮 - &gt;在JRE系统中   库窗口选择执行环境 - 在下拉列表中即可   选择我列出的JDK,它的JavaSE-1.7 - &gt;在此旁边点击   环境按钮 - &gt;在“执行环境”窗口中,您必须这样做   再为我选择你的Java SE JavaSE-1.7 - &gt;你选择它吧   将在Compatible JREs选项卡中有选项,因此请选择所需的JDK   在我的情况下,它有jdk1.7.0_25。

  

单击“确定”并通过执行适当的操作完成其余窗口   OK /完成。

最后做Maven Clean和Maven安装。

答案 14 :(得分:0)

我遇到了类似的问题,因为没有人发布类似于我的方法,我就去了。

  

导航到您要启动的运行配置   选择了JRE选项卡。调整&#34;运行时JRE&#34;在那里,你准备好了。

答案 15 :(得分:0)

在Eclipse中,导入Maven项目或调用“更新源”等操作在运行Eclipse的同一JVM中运行。如果JVM来自不属于JDK的JRE,则不会有Java编译器(tools.jar)。

因此,要从Eclipse中启动Maven,用于启动的JRE也需要来自JDK。默认情况下,Eclipse会注册JRE,但它可以在“Window / Preferences ... / Java / Installed JREs”首选项页面上配置,如上所述Parthasarathy

或者您可以在pom.xml中指定compilerId,因此Maven在编译Java代码时不会查找JDK:

 <plugin>
  <artifactid>maven-compiler-plugin</artifactid>
  <configuration>
    <compilerid>eclipse</compilerid>
  </configuration>
  <dependencies>
    <dependency>
      <groupid>org.codehaus.plexus</groupid>
      <artifactid>plexus-compiler-eclipse</artifactid>
      <version>xxxx</version>
    </dependency>
  </dependencies>
</plugin>

答案 16 :(得分:-1)

对于 Intellij Idea 设置适当的一切(与此类似):

JAVA_HOME = C:\Program Files\Java\jdk1.8.0_60
JRE_HOME = JAVA_HOME\jre

并且不要忘记重启想法。该程序在启动时获取变量,因此在程序运行时对环境变量的任何更改都不会产生任何影响。