maven构建失败:无法找到Javac编译器:jre或jdk问题

Gan*_*row 108 java eclipse maven

我将JAVA_HOME设置为

C:\Program Files (x86)\Java\jdk1.6.0_18
Run Code Online (Sandbox Code Playgroud)

在我运行maven安装后,我从eclipse获得此消息:

原因:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.
Run Code Online (Sandbox Code Playgroud)

我确信这是棘手的部分

请确保您使用的是JDK 1.4或更高版本,而不是JRE

当我将配置运行到JRE6时,如何将其更改为已安装的JDK 1.6

编辑

我甚至试图修改插件:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
                </configuration>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误

也许我忘了说我使用eclipse maven插件..如何在eclipse中从JRE更改为JDK?

luc*_*ell 139

您可以尝试更新Eclipse正在使用的JDK,如下所示:

在Window-> Preferences ...-> Java-> Installed JREs中添加和设置JRE:

JRE type: Standard VM JRE 
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18
Run Code Online (Sandbox Code Playgroud)

如果不是这种情况,则JAVA_HOME路径中的括号和空格可能会导致问题.尝试将JDK复制到其他位置并更新JAVA_HOME.

  • 对我来说需要额外的一步:转到所述项目的属性 - > java build path-> libraries->选择"JRE System Library",单击Edit并选择"Workspace default JRE" (47认同)
  • 此外,如果您从这些配置更改之前创建的eclipse运行配置运行Maven,请记住转到Run configuration window/JRE选项卡并选择正确的JRE.否则,即使将eclipse和项目设置更新为新的JRE,您也可能正在使用旧的错误JRE. (9认同)

小智 19

eclipse.ini需要vm参数指向你的jdk位置.

编辑eclipse.ini文件以指向您的jdk home,如下所示 -

-vm
C:\Program Files\Java\jdk1.6.0_06
Run Code Online (Sandbox Code Playgroud)

这可以确保Eclipse运行JDK而不是计算机上的任何默认JRE.

  • 这解决了我的问题.通过在Web上进行研究,看起来Maven使用JAVA_HOME,但Maven Plugin对JAVA_HOME一无所知,而是默认使用用于启动Eclipse的VM. (5认同)

小智 12

你试试:

转到Preferences/Java/Installed JREs并为该位置添加一个"C:\Program Files\Java\jdk1.6.0_27\jre或类似的东西.

删除一个 C:\Program Files\Java\jre6

正如您所看到的,C:\Program Files\Java\jre6\..\lib\tools.jar只有当第一部分(直到/ ..)被替换时,路径才有意义C:\Program Files\Java\jdk1.6.0_27\jre.

  • 非常感谢!它解决了我的问题! (2认同)

小智 9

将Fork设置为true可以解决我的问题.

<configuration>
<fork>true</fork>
<source>1.6</source>
<target>1.6</target>
</configuration>
Run Code Online (Sandbox Code Playgroud)

非常感谢,Sam Yang ......你结识了我的一天


小智 8

我有同样的问题!一直在搜索和搜索天,因为所有关于"把-vm c:\ program files\java\jdkxxxxx\bin"放在ini ar中作为一个shortcurt的参数的喋喋不休并不是所有的heklp!(我是否听起来很沮丧?相信我,这是轻描淡写的!我只是因为我失去了一周试图让Maven变得可靠而感到愤怒!)

我的行为非常不可预测.有时它编译,有时不编译.如果我做了maven clean,它找不到编译器并且失败了.如果我然后在构建路径中更改了某些内容,它会突然再次运行!!

直到我去窗口 - >首选项 - > java - >安装了JRE.我使用JDK的位置添加了一个新的JRE,然后删除了JRE.突然,maven跑稳了!

也许这值得在apache手册中放入字体大小为30左右的字母?尽管如此,这对java社区来说简直太过分了!我无法想象所有这些人失去了多少天,试图解决他们的问题!我无法想象这是作为最终版本发布的.我本人甚至不敢以BETA软件的名义发布这样的东西......

亲切的问候两种方式....经过一周的篡改后,我终于可以开始发展了.我希望我的老板不会发现这一点.我花了很多力气说服他不要去.NET,我已经为此感到遗憾.