首页 文章

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

提问于
浏览
106

我将JAVA_HOME设置为

C:\Program Files (x86)\Java\jdk1.6.0_18

在我运行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.

我确信这是棘手的部分

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

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

EDIT

我甚至试图修改插件:

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

我仍然得到同样的错误

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

30 回答

  • 1

    确保eclipse.ini中的“-vm”位于两个sperate行,即:

    -vm
    C:\Program Files\Java\jdk1.6.0_06
    
  • 12

    Echo %JAVA_HOME%
    那么 mvn --version

    JRE 路径应该相同....然后去 Window -> preferences - java - installed jre's
    位置应与 Java_Home 显示的相同 .

  • 0

    转到属性右键单击项目 .

    在LINKED RESOURCES中添加一个名为JAVA_HOME的新路径并放置您的jdk位置,例如“C:\ Program Files \ Java \ jdk1.8.0_73”

    就这样!!

  • 0

    许多其他答案告诉您将Eclipse指向JDK而不是JRE .

    这是另一个更具体/更明确的答案[比我在这里的任何答案中看到的]逐步说明如何做到这一点:How do you install JDK?

    这就是解决我同样问题的原因 .

  • 7

    您可以尝试更新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
    

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

  • 0

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

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

    -vm
    C:\Program Files\Java\jdk1.6.0_06
    

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

  • 3

    你试试:

    转到 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 替换时才有意义 .

  • 132

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

    <configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    </configuration>
    

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

  • 1

    我有同样的问题!一直在搜索和搜索天,因为所有关于“把-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,我已经为此感到遗憾 .

  • 0

    我在Eclipse中使用Run as - > Maven install遇到了同样的问题 . JAVA_HOME和eclipse.ini都没关系,指向我最新的JDK . 但是m2clipse使用了JRE . 在Eclipse之外使用mvn install工作得很好!在我的例子中,我解决了以下问题:1 . 在Eclipse中导航:Window - > Preferences - > Java - > Installed JRE 2. JRE和JDK有两个非活动条目 . 活动的是最新安装的JDK . 删除所有条目,但一个maven应该使用 .

    我认为maven没有考虑哪一个活跃...

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

    我改变了maven-compiler-plugin的配置来添加可执行文件和fork值真正 .

    <configuration>
                    <fork>true</fork>
                    <source>1.6</source>
                    <target>1.6</target>
                    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
                </configuration>
    

    它对我有用 .

  • 2

    我刚刚安装了maven 3.0.4,相应地设置了 M2_HOMEM2JAVA_HOME . 然后我运行了以下命令:

    mvn archetype:generate....

    mvn compile

    我得到了失败的消息,例如: maven unable to locate javac compiler .

    在我的计算机上,我在c:\ program files \ java \ jre.1.6上安装了默认的jre . 我将另一个c:\ java \ jdk1.6和 JAVA_HOME 设置为此c:\ java \ jdk1.6 .

    我的设置没有任何问题 . 搜索之后,我决定查看 mvn.bat ,我每一步都回显 %JAVA_HOME% 并且它正确显示为 C:\java\jdk1.6 但是当我运行命令: mvn --version 时,它显示Java home:c:\ program files \ java \ jre1.1.6 .

    最后,我发现我只需要在下面的命令中设置 -Djava.home=c:\java\jdk1.6 ,并且现在正常工作:

    %MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

    希望这可以帮助 .

    注意:这适用于命令行上的 mvn 而不适用于Eclipse .

  • 1

    听起来Maven使用的是JRE,而不是JDK . 也许您在安装JDK之前安装了Maven?

    检查settings files . 有3个总计,系统,用户和项目 . 它最有可能出现在安装配置($ M2_HOME / conf / settings.xml)或者可能是每用户配置($ / .m2 / settings.xml)中 .

  • 0
  • 19

    我通过将Installed JRE的位置更改为JDK本身中的目录来解决了这个问题 . 设置 JAVA_HOME 环境变量的正确值并没有解决问题 .

    就我而言,有两个目录

    • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

    • C:\Program Files\Java\jre7 --> For JRE

    最初我在Eclipse中将 C:\Program Files\Java\jre7 设置为已安装的JRE,并且在Maven的情况下我得到了相同的错误(Ant工作正常) .

    通过将已安装的JRE更改为 C:\Program Files\Java\jdk1.7.0_03\jre7 作为Eclipse中的已安装JRE,问题得以解决 .

  • 0

    Eclipse setup only

    执行以下步骤:

    • 右键单击Eclipse项目属性

    • Java构建路径 - >库

    • 选择JRE系统库 - >单击编辑按钮

    • 单击“已安装的JRE ...”按钮

    • 编辑JRE为:设置JRE Home = JAVA_HOME或JAVA_HOME \ jre

    ScreentShot:

    enter image description here

    非常感谢,

    帕塔

  • 0

    右键单击Project - > Properties - > Java Build Path . 选择JRE系统路径 - >编辑 . 选择Workspace Default JRE,并将其指向JDK> 1.4

  • 0

    Window -> Preferences -> Java -> installed JREs -> Execution Enviroments -> click the checkbox on the right side

  • 9

    解决方案很简单,有时候eclipse窗口 - >首选项 - > java - >安装的JRE指向 C:\Program files\Java\jre ,当我将其更改为 C:\Program files\Java\JDK 6.0\jre 时它正在100%工作 .

  • 0

    正如其他几个人所提到的,Eclipse Window->Preferences...->Java->Installed JREs 应指向您安装的 JDK ,而不是JRE . 只有这样它才能找到错误消息中提到的 ../lib 文件夹 .

    即使这样,问题也可能再次发生 . 我在Eclipse(Juno)中的出路是做一个 Maven -> Update project... ,之后问题就消失了 .

    我怀疑原因是一些Eclipse生成的文件(.classpath,.project,.preferences)是在我正遇到这些问题的项目中进行颠覆 . 因此,svn更新引入了这个问题,Eclipse中maven的配置更新再次解决了这个问题 .

    真正的解决方案: omit Eclipse generated .files from version control ,让maven eclipse插件处理项目配置 . (欢迎提供其他指示/建议) .

  • 1

    不要忘记,如果从特定的Eclipse配置运行项目,则应在添加正确的JDK后,在“运行配置” - >“您的maven配置” - >“JRE选项卡”中更改Java运行时你的Eclipse偏好 .

  • 1

    在我的情况下,在eclipse中 Run-> Debug Configurations 在jre选项卡中选择了jdk而不是jre解决了问题 .

  • 1

    我在Amazon Linux上遇到了同样的问题 . 事实证明我必须安装jdk的devel版本:

    sudo yum -y install java-1.7.0-openjdk-devel

  • 1

    转到Eclipse Window-> Preferences ...-> Java-> Installed JRE应指向您安装的JDK,而不是JRE .

  • 3

    我猜想编译器的位置是在pom中定义的,因为编译器插件位于显示的jre位置,而不是你有JAVA_HOME指向的jdk位置 .

  • 2

    如果您设置了JAVA_HOME,问题仍然存在,请尝试以下操作 . (我在新安装的电脑上遇到了同样的问题 . )

    假设您正在使用Eclipse .

    • 打开窗口 - 首选项 - java - 安装jre删除你所有的,添加你想要使用的(JDK,没有JRE!)

    • 在同一窗口中打开maven - 安装,添加您下载并在某处提取的mave安装 . (不要使用嵌入式maven安装,它有一些已知的错误)

    就这样 . 你的项目不会受到荷兰问题的影响 . 希望有所帮助

  • 0

    您还可以确保Eclipse具有所有更新的更改 . 为此,请右键单击项目,然后按“刷新”菜单项 .

  • 0

    您需要在 mvn.ini 中指明 JAVA_HOME (它位于maven文件夹 /bin 中),您的问题将消失 .

  • 2

    解决这个问题非常简单....

    如果您没有 ANT 构建文件,则生成它 . 在eclipse中,您可以轻松创建 ANT 文件 .

    请参阅创建 ANT 构建文件的链接[http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

    现在按照给定的步骤操作:

    1)在视图窗口中的ANT视图中添加 ANT 构建文件 .

    2)右键单击 ANT 构建文件,然后选择 Run As 和"Ant Build"中的第二个选项 .

    3)现在将打开一个对话框,其中包含各种选项和选项卡 .

    4)选择 JRE 选项卡 .

    5)您将看到3个单选按钮,他们将选择JRE或JDK作为选项 .

    6)仔细查看单选按钮选项是否已选择 JRE 然后将其更改为 JDK .

    7)单击“应用” .

    而已...!!!

相关问题