2011-03-11 71 views
13

我遇到的问题是eclipse无法解析我的项目的任何依赖关系。这会导致问题,因为即使依赖关系在编码时看起来工作正常(我获得了自动完成功能),我仍然会收到大量关于缺失工件的错误列表。本地存储库中缺少tools.jar m2eclipse

过滤时这些中,我发现了以下:

容器“Maven依赖”的引用不存在的库“/home/[...]/.m2/repository/com/sun/tools/ 1.5.0 /工具-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下RESOLV因此我不认为这会造成麻烦。在任何情况下,有没有办法告诉eclipse这个m2eclipse依赖项是一个系统依赖项,在本地存储库中找不到?

+0

我在交换Sun JDK for OpenJDK并忘记更新(并导出!)我的java.home变量后遇到此问题。 – phyzome 2012-01-04 20:04:25

+0

这里是有趣的答案http://stackoverflow.com/a/6810275/448078 – 2014-05-30 12:07:20

+0

这也可能发生在eclipse以外(使用CLI maven) – Francois 2014-08-20 08:06:34

回答

0

此依赖关系应该按预期工作。如果有疑问,请尝试使用Maven的命令行版本,因为Eclipse插件在涉及依赖项解析时非常脆弱。

与Eclipse的其他部分不同,如果POM出现问题,则无法为构建创建部分类路径,因此错误可能是其他情况。

如果一切都失败,请尝试将install the file放入本地存储库,以便您可以看到下一个错误。

+0

我忘了提及,但像往常一样,一切工作正常,从命令行。最大的问题是它会在eclipse中引发几百个错误,使得问题视图有点难以使用(我正在使用过滤)。我将尝试在我的本地存储库中安装tools.jar并查看会出现什么内容。 – wds 2011-03-23 11:05:27

1

在您导入Eclipse的每个项目中,Eclipse会在文件系统上创建一些文件 - .project,.classpath,一个文件夹.settings ,.看来Eclipse并没有正确更新它们。

删除这些并再次导入它们。

显然,如果这是您的第一次导入并且您已经获得一些问题,则此解决方法无效。比看看这里Maven2: Missing artifact but jars are in place

5

我有同样的问题 - Eclipse无法找到tools.jar。我发现原因是Eclipse使用JRE而不是JDK。你必须添加-vm参数的eclipse.ini是指向你的JDK的bin目录:
...
-vm
path_to_jdk \ BIN
...

这应该可以解决这个问题。

0

我最终发现是什么导致了它。看起来这是使用maven1存储库时m2eclipse中的一个错误。我还有我的pom中的java.net maven1存储库;禁用之后,所有事情都可以再次运行一个非常烦人的问题,因为最终它跟查找工具jar无关。

20

我面临同样的问题,做以下的事情

  • 新增-vm 路径/到/ JDK/bin中日食需要。ini文件
  • 清理现有工作区并重新加载项目。

它为我无缝工作。

值得补充的是,在我的eclipse.ini文件中,我不得不在文件顶部添加-vm ...行。像

-vm 
C:\Program Files\Java\jdk1.6.0_27\bin 
... ... ... 

确保,-vmargs被directely传递到虚拟机后,选择一个特定的状态取决于-vm选项-vm选项-vmargs前放置应有尽有。

+0

你也可以像Mojtaba http://stackoverflow.com/a/14100883/896588的答案那样设置它,甚至应该。日食中的设置。ini只计算Eclipse本身的运行时间,并且可以在“Installed JREs”对话框中为您在Eclipse中运行的任何内容进行覆盖。最安全的事情就是做这两件事。 – 2013-08-13 11:23:22

+1

我在Indigo做过这件事,忘了它,当我升级到开普勒时它又重新出现。再次解决完全一样的方式。 – hshib 2014-05-07 15:03:34

+0

“在文件顶部添加-vm ...行”对我有用 – Shinchan 2015-09-07 09:31:27

3

从struts依赖关系中排除了工具jar。

<exclusions> 
    <exclusion> 
     <groupId>com.sun</groupId> 
     <artifactId>tools</artifactId> 
    </exclusion> 
</exclusions> 
+0

Works。在我的项目中,Checkstyle 5.7包含了对工具的依赖。直到我从Java 7切换到Java 8时才出现问题。 – rwitzel 2014-05-02 12:12:39

1

听起来很奇怪,我只是通过与SVN存储库重新同步来解决这个问题。

事情是,我从另一台PC拿走了整个工作区,所以当我使用m2e插件导入maven项目时,可能某些依赖关系没有正确同步。

我发布这只是万一有人绝望与这个错误,并尝试所有的可能性。

2

您需要使用JDK安装来验证Eclipse是否为

在Eclipse IDE去 Window/Preferences/Java/Installed JREs 指向一个JDK安装。

例如:C:\Program Files (x86)\Java\jdk1.6.0_37

+0

因此JRE必须实际指向JDK? – 2015-07-06 14:24:57

+0

是的,它需要JDK路径中的tools.jar – Mojtaba 2015-07-07 07:20:58

9

我有这个问题,但我已经通过以下步骤固定:

案例1:

Eclipse的默认指向JRE但是Eclipse需要Maven插件JDK所以指向JDK

Window - > Preperences - > Java - >已安装的JRE

将其更改为JDK

案例2:

  1. 在Eclipse IDE中去:窗口...首选项...安装的JRE
  2. 选择默认JRE,然后单击编辑。
  3. 点击添加外部罐子
  4. 我在“C:\ Program Files \ Java \ jdk1.6.0_22 \ lib”中找到tools.jar并添加了它。

现在我可以建立我的项目没有任何问题。这是解决这个问题的正确方法吗?

+0

尽管我将eclipse改为使用JDK7,但仍然出现此错误。所以做了一个Windows搜索,并在JDK8/lib文件夹中找到了tools.jar的位置 - >将该jar作为外部jar文件添加到类路径中,并且它工作正常! – JavaTec 2016-02-23 21:57:46

0

我有同样的问题多次和我可以修复它下面的两个步骤:

  1. 我补充说:“-vm C:\\ BIN”到的eclipse.ini或者从我的Eclipse运行链接。
  2. 多次遇到这个问题后,我开始怀疑可能会有一些m2eclipse缓存在一段时间后(一天左右)重新加载,所以我尝试了一个奇怪的解决方案:暂时将计算机时间改为第二天并重新启动Eclipse或关闭/清理项目和....它工作!

我可以成功地重复该过程几次。

一个更优雅的解决方案(我还没有机会尝试它),可能是清除https://stackoverflow.com/a/16444984提到的m2eclipse缓存。

希望这会帮助任何人。

2

我读了这个,并尝试了各种各样的东西。对我有效的是:我更改了windows - > preferences - > java - >已安装的JRE,以指向JDK。这解决了这个问题。

+0

多数民众赞成多数民众赞成多数民众赞成在没有需要从maven进口的东西 – naoru 2014-04-29 16:01:06

+1

在我的情况下,这已经指向JDK(我没有安装在我的系统JRE),但仍然发生。 – hshib 2014-05-07 14:59:02

1

我也有类似的问题,并以下面的方式修复它。在命令提示符下转至JDK安装路径的lib目录。执行以下命令进行安装以安装tools.jar。

$mvn install:install-file -DgroupId=sun.jdk -DartifactId=tools \ 
    -Dpackaging=jar -Dversion=1.6 -Dfile=tools.jar 
+0

这是链接垃圾邮件*以及*作为答案。该链接对于这样一个简短的答案没有用处,特别是您没有链接到相关的博客文章。我编辑了链接。 – 2014-02-06 14:51:51

0

对于Mac用户

[1],找出你的虚拟机是键入此 在/ usr/libexec目录/ JAVA_HOME

[2]六./Eclipse.app/Contents/MacOS /eclipse.ini

[3]
-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/
-vmargs ........ ........

[4]在Eclipse中,更新的Maven

[5]星万事大吉:-)

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> 

只需添加它。它会工作。