Maven无法在以下位置findJavac编译器:

当我尝试生成一个战争文件,它显示了一些错误

[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 

我不知道为什么maven是指jre,当我的环境variables是jdk。 我也改变安装JRE到jdk1.6。

它只在Eclipse设置中

它有4个步骤TODO。

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

第2步:Java构buildpath – >库

第3步:selectJRE系统库 – >点击编辑button – >点击安装的JREs …button

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

ScreentShot:

在这里输入图像说明

转到窗口 – >首选项 – > Java – >已安装的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

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

我做了

  • Java构buildpath>>库
  • JRE系统Lybrary >>编辑
  • 安装了JRE >>点击我的jdk >>编辑
  • 添加外部Jars >> tools.jar

然后编译好

这是一个Eclipse问题。 当我试图从命令行使用

 mvn package 

它工作正常。

这听起来像你有JDK_HOME定义为一个用户variables和PATH定义为一个系统variables,反之亦然 – echo %PATH%不应该包含未parsing的variables,如...;%JDK_HOME%

确保%JDK_HOME%\binpath在您的PATHvariables上,即使您必须显式地放置path,也是未解决的。

JDK_HOMEvariables应该始终指向jdk的基本目录,而不是目录目录:

 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 

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

所以解决scheme是

你必须去POM,并确保你的依赖关系是这样的

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

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

所以要从Eclipse内部启动Maven,用于启动的JRE也需要来自JDK。 默认情况下,Eclipse注册它启动的JRE,但是这可以在Parthasarathy上面提到的“Window / Preferences … / Java / Installed JRE”首选项页面上configuration

另外,你可以在pom.xml中指定compilerId,所以在编译Java代码时,Maven将不会寻找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> 

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

导航到您想要启动的运行configuration。
那里select了JRE选项卡。 在那里调整“运行时间JRE”,然后就可以开始了。

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

右键单击项目selectBuild path – > Configure build path – >selectLibraries Tab – >然后selectJRE System Library [你为我的JavaSE-1.7版本] – >点击Editbutton – >在JRE System Library窗口中selectExecution environment – 在下拉列表中,您可以select为其列出的JavaSE-1.7 – >这个点击环境button旁边的JDK – >在执行环境窗口中,您必须再次为我的JavaSE-1.7select您的Java SE – >select它,你将在兼容的JRE选项卡中有选项,所以select你想要的jdk1.7.0_25中的JDK。


点击确定,完成其余的窗口做适当的行动确定/完成。

最后做Maven Clean和Maven Install。

对于Intellij Idea来说,一切都适当(与此类似):

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

不要忘记重新启动Idea 。 这个程序在启动时selectvariables,所以程序运行时对环境variables的任何改变都不会有任何影响。

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