我遇到的问题是eclipse无法解决我项目的任何依赖关系。这会导致问题,因为即使依赖关系似乎在编码时工作正常(我得到自动完成),我仍然会得到一个很大的错误列表,指出缺少的工件。
过滤这些时,我发现了以下内容:
容器'Maven Dependencies'引用非现有库'/ home /[...]/.m2 / repository / com / sun / tools / 1.5.0 / tools-1.5.0.jar'
似乎这种依赖是由struts2引入的,他们的pom中的配置文件设置如下:
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.5.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
那个systemPath解析了,所以我没有看到这会导致麻烦的原因。在任何情况下,有没有办法告诉eclipse这个m2eclipse依赖是一个在本地存储库中找不到的系统依赖?
答案 0 :(得分:24)
我遇到了同样的问题,需要做以下事情
它无缝地为我工作。
值得补充的是,在我的eclipse.ini
文件中,我必须在文件顶部添加 -vm ... 行。喜欢
-vm
C:\Program Files\Java\jdk1.6.0_27\bin
... ... ...
确保将-vm选项放在-vmargs之前作为-vmargs直接传递给vm后的所有内容,并选择一个特定的选项取决于-vm选项。
答案 1 :(得分:9)
我遇到了这个问题,但我已经通过以下步骤解决了这个问题:
<强>情况1:强>
Eclipse默认指向JRE,但eclipse maven插件需要JDK,所以指向JDK
窗口 - &gt; Preperences - &gt; Java - &gt;已安装的JRE
将其更改为JDK
按照步骤从JRE更改为JDK
现在我可以毫无问题地构建我的项目。这是解决这个问题的正确方法吗?
答案 2 :(得分:5)
我遇到了同样的问题 - Eclipse无法找到tools.jar。我发现原因是Eclipse使用的是JRE而不是JDK。您必须向指向JDK bin目录的eclipse.ini添加-vm参数:
......
-vm
path_to_jdk \ bin
...
这应解决问题。
答案 3 :(得分:5)
从struts依赖项中排除工具jar。
<exclusions>
<exclusion>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
</exclusion>
</exclusions>
答案 4 :(得分:3)
下载http://repository.ops4j.org/maven2/tools/tools/1.5.0/
并将jar放入C:\Documents and Settings\Administrador\.m2\repository\com\sun\tools\1.5.0
。祝你好运。
答案 5 :(得分:3)
您需要使用JDK安装验证Eclipse是 。
在Eclipse IDE中转到
Window
/ Preferences
/ Java
/ Installed JREs
指向JDK安装。
例如:C:\Program Files (x86)\Java\jdk1.6.0_37
答案 6 :(得分:2)
我读了这个并尝试了各种各样的事情。对我有用的是:我改变了窗户 - &gt;偏好 - &gt; java - &gt;安装JRE代替JDK。这解决了这个问题。
答案 7 :(得分:1)
在导入Eclipse的每个项目中,Eclipse在文件系统上生成一些文件 - .project,.classpath,文件夹.settings。似乎Eclipse没有正确更新这些。
删除这些并再次导入它们。
显然,如果这是您的第一次导入并且您已经获得了一些问题,则此解决方法将无效。请看这里Maven2: Missing artifact but jars are in place
答案 8 :(得分:1)
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6.0</version>
<scope>system</scope>
<systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
添加此内容。它会起作用。
答案 9 :(得分:1)
我也有类似的问题,并按照以下方式修复。在命令提示符下转到JDK安装路径的lib目录。执行以下命令进行安装以安装tools.jar。
$mvn install:install-file -DgroupId=sun.jdk -DartifactId=tools \
-Dpackaging=jar -Dversion=1.6 -Dfile=tools.jar
答案 10 :(得分:1)
听起来很奇怪,我只是通过与SVN存储库重新同步来解决这个问题。
问题是,我从另一台PC上获取了整个工作区,所以当我使用m2e插件导入maven项目时,某些依赖项可能无法正确同步。
我发布此信息是为了防止有人对此错误感到绝望并尝试所有可能性。
答案 11 :(得分:0)
我有几次同样的问题,我可以按照两个步骤修复它:
我可以成功地多次重复这个过程。
一个更优雅的解决方案(我还没有机会尝试它),可能是要清除https://stackoverflow.com/a/16444984中提到的m2eclipse缓存。
希望这对任何人都有帮助。
答案 12 :(得分:0)
我最终找到了导致它的原因。当您使用maven1存储库时,看起来这是m2eclipse中的一个错误。我的pom中仍然有java.net maven1存储库;禁用后一切都恢复正常。追踪是一个非常烦人的问题,因为最终它与查找工具jar无关。
答案 13 :(得分:0)
[1]找出您的VM键入的位置 的/ usr /的libexec / JAVA_HOME
[2] vi ./Eclipse.app/Contents/MacOS/eclipse.ini
[3]
-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/
-vmargs
........
........
[4]在Eclipse中,更新Maven
[5] Sing All is well :-)
答案 14 :(得分:0)
此依赖项应按预期工作。如果有疑问,请尝试使用Maven的命令行版本,因为Eclipse插件在依赖解析方面非常脆弱。
与Eclipse的其他部分不同,如果POM出现问题,它甚至无法为构建创建部分类路径,因此错误可能是其他错误。
如果所有其他方法都失败了,请尝试install the file进入您的本地存储库,这样您就可以看到下一个错误。
答案 15 :(得分:0)
此问题归因于错误的Java配置。每个IDE都需要完整的JDK包。因为在JDK lib而不是jre lib
中可以使用tools.jar转到控制面板,将环境路径变量更改为C:\ Program Files \ Java \ jdk1.8.0_31 \ jre \ bin。
将JAVA_HOME更改为C:\ Program Files \ Java \ jdk1.8.0_31。
打开IDE(eclipse或STS)将JRE系统库更改为C:\ Program Files \ Java \ jdk1.8.0_31
然后重新启动IDE。会工作
答案 16 :(得分:0)
对我有用的hacky解决方案:
如果m2e抱怨在Maven缓存中找不到以下jar(您可以在pom文件的错误日志中或“ Java Build Path> Maven Dependencies”列表中找到错误的路径):>
${HOME}/.m2/repository/jdk/tools/jdk.tools/1.6/jdk.tools-1.6.pom
然后尝试以下命令(为已安装的JDK输入JAVA_VERSION_HERE
,例如jdk1.8.0_191-amd64,然后使用上方.m2/repository/
之后的两个路径部分来确定正确的{{1} },并用m2e抱怨的任何版本替换groupId
-您安装的JDK是否匹配m2e抱怨的版本可能无关紧要):
1.6
此命令从您的JDK复制mvn install:install-file -Dfile=/usr/java/JAVA_VERSION_HERE/lib/tools.jar \
-DgroupId=jdk.tools -DartifactId=jdk.tools -Dpackaging=jar -Dversion=1.6
并将其放入Maven缓存,并为其创建一个tools.jar
文件,以便Maven可以使用它。