Maven 2 JAVA_HOME和maven依赖关系的奇怪问题

Maven 2 JAVA_HOME和maven依赖关系的奇怪问题,maven-2,java-home,Maven 2,Java Home,我将JAVA_HOME变量设置为C:\Program Files\JAVA\jre6\当我在项目上运行maven包时,它告诉我它无法解析依赖关系 [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

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

[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使用了这种依赖关系

[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看起来像
C:\Program Files\JAVA\jre6\bin\
,但是maven没有运行,它告诉我我的JAVA_HOME路径是错误的

你需要一个JAVA JDK而不仅仅是一个JRE。你可以一点一个

编辑: 从:

${java.home}指定当前JRE_主环境的路径,使用相对路径获取,例如:
${java.home}../bin/java.exe

以JDK为例,在
c:\JDK
中,maven${java.home}指向
c:\JDK\jre
编写、编译和打包java程序,需要JDK,因为所需的工具仅与JDK(java开发工具包)一起分发。JRE(Java运行时环境)仅用于运行Java程序。

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

对我来说,最终的解决办法是纠正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>

maven编译器插件
2.0.2
${default.java.version}
${default.java.version}
假的
${default.java.home}/bin/javac
${default.java.version}
真的
maven编译器插件
2.0.2
1.6
1.6

我也发现这一点帮助了我

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

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


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

而言,在不干扰Java\u HOME env变量的情况下,我可以通过以下方式修复它

安装1.6.x jdk

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

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


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

这个问题也出现在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>

发展
真的
数字版本

只是为了在回答中添加更多关于更改窗口首选项的信息。我将JRE位置设置为
C:\Program Files\Java\jre7
,因为这似乎是一个明显的选择


然而,这是一个失败。指出的正确答案是
C:\ProgramFiles\Java\jdk1.7.0\u 10\jre
。我指出这一点是因为它很容易出错。

在键入
Java-version
时,我能够在命令提示符中看到相应的响应,但在键入
mvn-version
时出现此错误

在我的例子中,这是一个愚蠢的错误。
JAVA\u HOME
环境变量一直指向
。\jdk\bin
文件夹,这导致了问题。从
JAVA\u HOME
变量的值中删除bin后,我可以使用Maven

注意:系统变量path应该包含指向JDK的bin文件夹的值

问候,,
Balaji.K

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

  • 将JAVA_主页设置为“jdk文件夹”\jre
  • 将“jdk folder”\bin添加到PATH用户环境变量中
  • JAVA_HOME是“JAVA.exe”的位置,它需要来自JRE\bin文件夹。 路径是查找javac.exe,它需要来自JDK\bin文件夹


    这也确保了JDK和JRE是兼容的

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

    e、 g.JAVA\u HOME=C:\Program Files\JAVA\jdk1.7.0\u 25

    此外,还需要PATH环境变量中包含的C:\Program Files\Java\jdk1.7.0\U 25\bin

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

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


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

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

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

    这就解决了问题。

    我也遇到过类似的问题,答案很简单

    maven无法找到JAVA_HOME变量,直到我意识到,我将JAVA路径写入了path变量。
    所以我的“错误:在您的环境中找不到JAVA_HOME…”的答案是创建一个名为JAVA_HOME的新变量。对于傻瓜来说,这可能是个失败,但我花了一个小时才意识到…

    您还应该确保JAVA库位于项目的类路径上。导航到项目的属性->JAVA构建路径->库选项卡。检查是否列出了jdk库。如果没有,请添加它