当前位置: 首页 > 知识库问答 >
问题:

Maven未正确选择JAVA_HOME

孔嘉茂
2023-03-14

我是在windows环境和使用maven编译我的项目。虽然我刚刚创建了项目并添加了各个Libaries的依赖项。

当我添加它们时,maven开始抱怨缺少tools.jar,所以我在pom.xml中添加了以下内容:

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

当我运行maven安装时,我得到了一个丢失的jar的错误,如下所示:

[ERROR] Failed to execute goal on project GApp: Could not resolve dependencies for project GApp:GApp:war:0.0.1-SNAPSHOT: Could not find artifact com.sun:tools:jar:1.6 at specified path C:\Program Files\Java\jre6\lib\tools.jar -> [Help 1]

问题是tools.jar在“C:\ProgramFiles\Java\JDK1.6.0_26\lib”中,并且在JAVA_HOME环境变量中正确设置,但是maven仍然在jre文件夹中查找,错误消息为“C:\ProgramFiles\Java\JRE6\lib\tools.jar”。

C:\>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26

有趣的是:当我在dependency中设置完整路径时,它工作得很好。但我不想硬编码。

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

有人能提出任何动态的解决方案吗?

共有1个答案

蓟和煦
2023-03-14

这是Eclipse Maven支持中的一个bug。根据Maven规范,Eclipse并不支持所有全局Maven属性。

根据规格:

${java.home}指定当前JRE_HOME环境的路径,与要获取的相对路径一起使用,例如

至少在Eclipse 4.3.1中并非如此,这里的java.home总是指向用于启动Eclipse的JRE,而不是构建JRE。

要解决这个问题,您需要通过在Eclipse.ini添加如下内容(在-vmargs之前),使用JDK中的JRE启动Eclipse:

-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
 类似资料:
  • 问题内容: 我在Windows环境中,并使用Maven编译我的项目。尽管我刚刚创建了项目并添加了各种库的依赖项。 当我添加它们时,maven开始抱怨丢失,因此我在下面添加了以下内容: 当我运行Maven安装时,出现以下丢失的jar错误: 问题是,它位于“ ”中,并且已在环境变量中正确设置,但是maven仍在jre文件夹中查找错误消息“ ”。 有趣的是 :当我在依赖项中设置完整路径时,它工作得很好。

  • 我有一个非常简单的角度材料选择组件,从一个对象数组填充。我尝试了ngModel和component select属性的双向绑定,但两者都不能像预期的那样工作。 我所期望的:更改选择的选项将相应地更新ngModel值。 实际发生的情况:更改selected选项会触发select change方法,但不更新binded属性。 如何再现:选择选项2,然后回到选项1,只播放2个选项。 转载位置:https

  • 为了优化存储,在任何情况下均应使用最精确的类型。例如,如果列的值的范围为从1到99999,若使用整数,则MEDIUMINT UNSIGNED是好的类型。在所有可以表示该列值的类型中,该类型使用的存储最少。 用精度为65位十进制数(基于10)对DECIMAL列进行所有基本计算(+、-、*、/)。参见11.1.1节,“数值类型概述”。 使用双精度操作对DECIMAL值进行计算。如果准确度不是太重要或如

  • 校验者: 翻译者: @李孟禹 通常,解决机器学习问题的最困难的部分可能是找到恰当的的评估器(estimator)。 不同的评估器更适合不同类型的数据和不同的问题。 下面的流程图是一些粗略的指导,可以让用户根据自己的数据来选择应该尝试哪些评估器。 点击下图的任何评估器,查看其文档。

  • 我有一个servlet,它从JSP a中捕获select字段选项值的请求参数,并将其存储在请求范围中。 现在,这个servlet在处理后再次将我重定向到同一个JSP A,现在在JSP A中,我有相同的选项字段,还有类似的代码, 但由于某些原因,代码永远不会进入c:when和它直接进入otherwise部分。 虽然我已经广泛使用了JSTL,但由于某些原因我无法启动它。我知道值存在于请求范围中,并且可

  • 我有SQL声明 关系为1-N:用户可能有许多文件。 这有效地选择了第二个10元素页面。 问题是这个查询限制/偏移了一个连接的表,但我想限制/偏移第一个(