Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个java项目的pom.xml中,我得到了缺少的工件jdk.tools:jdk.tools:jar:1.6错误_Java_Maven - Fatal编程技术网

在一个java项目的pom.xml中,我得到了缺少的工件jdk.tools:jdk.tools:jar:1.6错误

在一个java项目的pom.xml中,我得到了缺少的工件jdk.tools:jdk.tools:jar:1.6错误,java,maven,Java,Maven,我想我知道如何解决这个问题,除了:我不知道pom中的具体版本指的是哪里(我没有明确看到),我看到的解决方案是添加此依赖项: <dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <

我想我知道如何解决这个问题,除了:我不知道pom中的具体版本指的是哪里(我没有明确看到),我看到的解决方案是添加此依赖项:

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
 </dependency>

com.sun
工具
1.6
系统
C:\ProgramFiles\Java\jdk1.6.0\U 29\lib\tools.jar
但是我想使用com.oracle,Windows上的jdk目录是jdk1.8

那么,有没有办法使pom“想要”成为我机器上实际拥有的工具版本?

您可以使用“java.home”环境变量:

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>${java.home}/lib/tools.jar</systemPath>
</dependency>

com.sun

我终于用正确的方法解决了这个问题

当eclipse使用JRE而不是JDK启动时会发生这种情况,因为
tools.jar
不在JRE中。 基于该断言,尝试安装JDK。如果它已经安装,请检查
路径
是否有JDK路径而不是JRE路径

小心,java的最新版本似乎添加到了
Path
以下目录中:
C:\ProgramData\Oracle\java\javapath
。它包含可能链接到JRE的快捷方式。您将要删除它并添加到JDK bin文件夹的链接。(例如
C:\ProgramFiles\Java\jdk1.8.0\u 66\bin

请注意,您可能需要重新启动计算机,才能使
路径中的更改对eclipse启动有效(我真的不明白为什么我必须这样做,但我做到了)

还要注意,Java更新可能会将
javapath
重新添加到您的路径中。因此,您可能不希望使用自动更新,而是希望在安装后手动更新JDK并调整路径。它有点重,但能起作用。


<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.7</version>
    <scope>system</scope>
    <systemPath>C:/jdk1.7.0_51/lib/tools.jar</systemPath>
</dependency>
jdk.tools jdk.tools 1.7 系统 C:/jdk1.7.0_51/lib/tools.jar
对于将来在这个问题上遇到困难的人,请继续阅读,以获得更优雅的解决方案:

理由 此问题出现在以下两种情况之一:

  • 您没有安装和配置JDK;或

  • 您已经安装了JDK和JRE,并且JRE的优先级高于JDK路径

  • 解决方案 如中所述,只需将依赖项添加到
    pom.xml
    文件中的
    tools.jar

    <dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.7.0_05</version>
    <scope>system</scope>
    <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
    </dependency>
    

    正如我所想,解决这个问题的最佳方法是将以下配置添加到eclipse.ini中,以确保它在运行eclipse时使用javaw的jdk副本,而不是JRE副本。JRE副本解决了这个问题,似乎是解决这个问题的正确方法

    -vm
    C:/Program Files/Java/jdk1.8.0_73/bin/javaw.exe
    

    我在eclipse中找到了这个问题的解决方案

    在月食中

    导航到窗口->首选项

    在左侧窗格中,展开Java,您将找到“Installed JRE”条目

    选择该选项,您应该能够看到引用JRE文件夹而不是JDK文件夹的JRE条目

    选择要编辑的条目,然后将其重定向到JDK文件夹,然后单击Apply


    这立刻解决了我的问题。

    您只需将依赖项添加到pom.xml文件中的tools.jar即可

    <dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.7.0_05</version>
    <scope>system</scope>
    <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
    </dependency>
    
    
    jdk.tools
    jdk.tools
    1.7.0_05
    系统
    ${JAVA_HOME}/lib/tools.jar
    
    如果错误仍然存在,请将tools.jar的路径更改为绝对路径,如下所示:

    <systemPath>C:/Program Files/Java/jdk1.8.0_65/lib/tools.jar</systemPath>
    
    <systemPath>C:/Program Files/Java/jdk1.8.0_65/lib/tools.jar</systemPath>
    
    C:/ProgramFiles/Java/jdk1.8.0_65/lib/tools.jar
    
    maven怎么能猜出你的机器上有什么版本?我不知道是什么让它要求1.6版。我在最新版本的java下有tools.jar文件,但是当我指定依赖项时,pom仍然显示一个错误。错误(大红圈)发生在pom的顶部——它与依赖项块无关。我从来没有遇到过这样的问题,所以这只是一个猜测:你确定你正在使用jdk,而不是调用jre吗?你能在这里粘贴你的pom吗?确切的错误是什么?这能回答你的问题吗?我的问题是,为什么错误是指缺少1.6版tools.jar?我有一个更新的(1.8)版本的这个文件,我希望能够使用它。对不起,我误解了。1.6版本可能来自JAVA_HOME env变量中引用的JDK版本。您的JAVA_主页是用JDK1.8路径定义的吗?你的IDE呢?您是在IDE外部还是内部收到此错误?也许您的IDE没有使用您期望的JDK版本?我还必须删除
    c:\windows\system32
    中JRE.exes的副本。感觉不太好,但无论如何都可以让臃肿的Eclipse/MavenCrapWare正常工作。我认为这其中的一个问题是检查项目的人将如何得到它。因此,我认为pom是解决这个问题的正确地方。在pom中解决这个问题的问题是,检查项目的用户无论如何都应该使用javaw的jdk副本,而不是jre。因此,我认为最好通过约定而不是配置来解决这个问题。@Jeff此外,每个用户都有一个指向所讨论的jar文件的不同路径,因此无法在使用maven配置时运行构建。同样,以这种方式修改pom将使pom不再对SCC友好。e、 g.我们混合使用Mac/Unix/Windows环境,因此用户之间的路径会发生变化。虽然使用java.home env变量可以解决此问题。但系统路径在eclipse中为我做到了这一点。@VikramDeshmukh:我们现在处于“未来”,问题可能实际上是JDK版本。看看我的答案。