【问题标题】:weird problem with JAVA_HOME and maven dependenciesJAVA_HOME 和 Maven 依赖项的奇怪问题
【发布时间】:2011-07-18 14:06:00
【问题描述】:

当我在项目上运行 maven 包时,我将 JAVA_HOME 变量设置为 C:\Program Files\Java\jre6\,它告诉我它无法解决依赖关系

[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (default) on project roo: Execution default of goal o
rg.codehaus.mojo:aspectj-maven-plugin:1.0:compile failed: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.0 or one of its dependencies
could not be resolved: Could not find artifact com.sun:tools:jar:1.4.2 at specified path C:\Program Files\Java\jre6/../lib/tools.jar ->
[Help 1]

所以它假设 JAVA_HOME 实际上比实际更深一层,我查看了 maven 本地存储库,发现 log4j 1.2.16 使用了这个依赖项

我试图让 JAVA_HOME 看起来像 C:\Program Files\Java\jre6\bin\ 但后来 maven 无法运行,它告诉我我的 JAVA_HOME 路径错误

【问题讨论】:

    标签: maven-2 java-home


    【解决方案1】:

    您将需要 Java JDK 而不仅仅是 JRE。你可以在Oracle's Java Page得到一个

    编辑: 来自Maven Properties Guide

    ${java.home} specifies the path to the current JRE_HOME environment use with relative paths to get for example:
    <jvm>${java.home}../bin/java.exe</jvm>
    

    例如在c:\jdk 中使用JDK,maven ${java.home} 指向c:\jdk\jre

    【讨论】:

    • 我已经安装了 jdk,并将 JAVA_HOME 更改为 jdk 文件夹 c:\Program Files\Java\jdk1.6.0_24 但是当我运行 maven 时它说:c:\roo\test&gt;mvn ERROR: JAVA_HOME is set to an invalid directory. JAVA_HOME = "C:\Program Files\Java\jre6\jdk1.6.0_24" Please set the JAVA_HOME variable in your environment to match the location of your Java installation
    • 奇怪,我已经重启了 pc 和 maven 现在可以工作了。请告诉我C:\Program Files\Java\jre6/../lib/tools.jar 点在哪里?所以现在,我想,C:\Program Files\Java\jdk1.6.0_24/../lib/tools.jar。不是相对路径,指向上层文件夹吗?但是 `C:\Program Files\Java` 中没有 lib 这样的文件夹,但依赖关系已解决
    • 我不知道它指向哪里。但是需要重新启动来更新 JAVA_HOME 并且如果更改了整个系统中的 PATH。在 linux 中,您需要打开一个新的终端,例如让更改后的环境变量可用。
    • 变量已经更新,你可以看到 maven 在打印更新版本时意识到了这个变化
    【解决方案2】:

    在我的命令行 Maven 项目(与 Eclipse 中的 maven 版本不同)进行 Java 自动更新(在 Windows 7 上)之后,我遇到了这个问题。 JRE 自动更新删除了我的系统 JAVA_HOME 环境变量指向的 JDK 下的 jre 文件夹。由于没有找到 jre,maven 默认使用新安装的 JRE(仍然没有弄清楚如何)。我恢复了我的 JDK 目录下的 jre 文件夹并删除了对 C:\ProgramData\Oracle\Java\javapath 的引用,该引用已添加到系统 Path 变量的开头,并且 maven 构建恢复正常。

    【讨论】:

      【解决方案3】:

      您还应该确保 Java 库位于项目的类路径中。导航到项目的属性-> java 构建路径-> 库选项卡。检查是否列出了 jdk 库。如果没有添加它。这也可能是导致此类错误的原因。

      【讨论】:

        【解决方案4】:

        我也遇到过类似的问题,答案就是这么简单;

        maven 找不到 JAVA_HOME 变量,直到我意识到我将 Java 路径写入了路径变量。 所以我的“错误:在你的环境中找不到 JAVA_HOME...”的答案是创建一个名为 JAVA_HOME 的新变量。也许这对傻瓜来说是失败的,但我花了一个小时才意识到......

        【讨论】:

          【解决方案5】:

          我遇到了类似的问题,以下解决了这个问题:

          JAVA_HOME = C:\Program Files\java\jdk
          M2_HOME= C:\Program Files\apache-maven
          
          inside path = ....%JAVA_HOME%\bin;%M2_HOME%\bin;
          

          这解决了问题。

          【讨论】:

            【解决方案6】:

            今天遇到了同样的问题。事实证明我特别需要在路径中使用“程序文件”,尽管这个 windows 安装(以及文件夹的名称)是德语的。

            这种事情也不是第一次发生了。

            因此,如果您确定您的路径是正确的,请尝试“程序文件”而不是您的本地化替代方案。为我工作。

            【讨论】:

              【解决方案7】:

              要运行 Maven - 您需要配置环境变量 JAVA_HOME 以指向 JDK

              例如JAVA_HOME=C:\Program Files\Java\jdk1.7.0_25

              您还需要 PATH 环境变量中包含的 C:\Program Files\Java\jdk1.7.0_25\bin。

              问候, 地盘

              【讨论】:

                【解决方案8】:

                配置JAVA环境变量的正确方法是:-

                1. 将 JAVA_HOME 设置为您的“jdk 文件夹”\jre
                2. 将“jdk 文件夹”\bin 添加到您的 PATH 用户环境变量中

                JAVA_HOME 是“java.exe”的位置,需要来自 JRE\bin 文件夹。 PATH是寻找需要来自JDK\bin文件夹的javac.exe。

                这也确保了 JDK 和 JRE 兼容

                【讨论】:

                  【解决方案9】:

                  我在输入 java -version 时能够在命令提示符中看到适当的响应,但在输入 mvn -version 时出现此错误。

                  就我而言,这是一个愚蠢的错误。 JAVA_HOME 环境变量一直指向..\jdk\bin 文件夹,这导致了问题。从 JAVA_HOME 变量的值中删除 bin 后,我可以使用 Maven。

                  注意:系统变量路径应包含指向 JDK 的 bin 文件夹的值。

                  问候, 巴拉吉.K

                  【讨论】:

                    【解决方案10】:

                    只是在有关更改窗口首选项的答案中添加更多信息。我将 JRE 位置设置为 C:\Program Files\Java\jre7,因为这似乎是显而易见的选择。

                    但是,这是失败的。指出的正确答案是C:\Program Files\Java\jdk1.7.0_10\jre。我指出这一点是因为这是一个容易犯的错误。

                    【讨论】:

                      【解决方案11】:

                      这个问题也出现在 Intellij IDEA (IDEA 11.x ~ Windows 7 ~ Java 7) 中。指定 systempath 属性是在引用 IDEA jre ...

                      一个稳定的解决方案是在 $HOME/.m2/settings.xml 下创建一个本地 maven 配置文件

                      <profiles>
                        <profile>
                          <id>dev</id>
                            <activation>
                              <activeByDefault>true</activeByDefault>
                                <jdk>NUMERIC_VERSION</jdk>
                              </activation>
                              <properties>
                                <java.home>                   
                                  <!-- ABSOLUTE_PATH_HERE -->
                                </java.home> 
                              </properties>
                        </profile>
                      </profiles>
                      

                      【讨论】:

                        【解决方案12】:

                        在不弄乱 JAVA_HOME 环境变量的情况下,这是我能够修复它的方法。

                        安装 1.6.x jdk。

                        在已安装的 JRE 下的 Eclipse/Preferences 中,为 JDK 添加一个条目并将其设为默认值(将位置设置为 JDK 文件夹,例如 C:\Program Files\Java\jdk1.6.0_34

                        编辑属性并将 JDK_HOME/lib/tools.jar 添加到系统库列表中。

                        或者,假设安装了 jdk,您可以将 JDK/lib/tools.jar 添加到现有默认 JRE 的系统库列表中

                        【讨论】:

                          【解决方案13】:

                          我也发现这个对我有帮助。

                          ... 使用 Eclipse,您需要验证已安装的 JRE 是否正在使用 JDK 安装。

                          这意味着在配置选项中... 窗口/首选项/Java/已安装的 JRE ...您应该指向 JDK 安装。

                          您需要更改 jdk 中 jre 的路径。对于 %Program Files%\Java\jdk1.6.0_25\jre

                          【讨论】:

                          • 我还必须在 eclipse.ini '-vm C:\Program Files\Java\jdk1.6.0_31\bin\javaw.exe' 中设置 VM
                          【解决方案14】:

                          java.home 变量可以进一步从您的项目 pom.xml 派生。仔细检查您的 Maven 编译器插件参考。我在尝试构建时遇到了同样的问题,抱怨它找不到 javac。我的 java.home、JAVA_HOME 都设置正确。

                          原来对我来说是 FIX 是更正 pom.xml 我最终做了以下更改:

                                      <!-- Original Version of compiler plugin reference -->
                                      <artifactId>maven-compiler-plugin</artifactId>
                                      <version>2.0.2</version>
                                      <configuration>
                                          <source>${default.java.version}</source>
                                          <target>${default.java.version}</target>
                                          <showDeprecation>false</showDeprecation>
                                          <executable>${default.java.home}/bin/javac</executable>
                                          <compilerVersion>${default.java.version}</compilerVersion>
                                          <fork>true</fork>
                                      </configuration>
                          
                                      <!-- MODIFIED Version of compiler plugin reference -->
                                      <artifactId>maven-compiler-plugin</artifactId>
                                      <version>2.0.2</version>
                                      <configuration>
                          
                                          <!-- SPECIFY A DISCRETE VERSION!! Do not let it derive it! -->
                                          <source>1.6</source>
                                          <target>1.6</target>
                          
                                          <!--
                                            <showDeprecation>false</showDeprecation>
                                            <executable>${default.java.home}/bin/javac</executable>
                                            <compilerVersion>${default.java.version}</compilerVersion>
                                            <fork>true</fork>
                                         -->
                                      </configuration>
                          

                          【讨论】:

                            【解决方案15】:

                            编写、编译和打包java程序需要一个JDK,因为必要的工具只随JDK(Java Development Kit)一起分发。 JRE(Java Runtime Environment)只需要运行一个java程序。

                            【讨论】:

                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2020-10-21
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多