JAVA_HOME和maven依赖项的奇怪问题

时间:2011-03-19 02:00:36

标签: maven-2 java-home

当我在项目上运行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路径错了

15 个答案:

答案 0 :(得分:16)

您需要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

答案 1 :(得分:8)

我也发现这帮助了我。

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

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

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

答案 2 :(得分:2)

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>

答案 3 :(得分:1)

此问题也出现在Intellij IDEA(IDEA 11.x~W​​indows 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>

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

今天有同样的问题。事实证明,我特别需要在路径中使用“Program Files”,尽管这个Windows安装(因此文件夹的名称)是德语。

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

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

答案 6 :(得分:0)

编写,编译和打包java程序需要一个JDK,因为必要的工具只与JDK(Java Development Kit)一起发布。只有运行java程序才需要JRE(Java运行时环境)。

答案 7 :(得分:0)

在不弄乱JAVA_HOME env变量的情况下,以下是我能够解决的问题。

安装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的系统库列表中

答案 8 :(得分:0)

我在键入java -version时能够在命令提示符下看到相应的响应,但在键入mvn -version时遇到此错误。

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

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

此致 Balaji.K

答案 9 :(得分:0)

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

  1. 将JAVA_HOME设置为“jdk文件夹”\ jre
  2. 将“jdk文件夹”\ bin添加到PATH用户环境变量
  3. JAVA_HOME是“java.exe”的位置,需要来自JRE \ bin文件夹。 PATH是查找需要来自JDK \ bin文件夹的javac.exe。

    这也确保JDK和JRE兼容

答案 10 :(得分:0)

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

e.g。 JAVA_HOME = C:\ Program Files \ Java \ jdk1.7.0_25

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

此致 DIPAN

答案 11 :(得分:0)

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

JAVA_HOME = C:\Program Files\java\jdk
M2_HOME= C:\Program Files\apache-maven

inside path = ....%JAVA_HOME%\bin;%M2_HOME%\bin;

这解决了这个问题。

答案 12 :(得分:0)

我有类似的问题,答案很简单;

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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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