我一直在关注入门教程,但在使用Maven导入playn项目后卡住了.我正在使用在64位Windows 7上运行的Eclipse Indigo.
所有导入的项目都有相同的错误:
Missing Artifact com.sun:tools:jar in all the pom.xml files.
Run Code Online (Sandbox Code Playgroud)
经过几个小时的搜索论坛,我尝试过:
安装最新的Java 1.6.029更改JAVA_HOME环境变量以指向\program files\Java\jdk1.6_029
更改Eclipse Java首选项以使用JRE jdk1.6_029.
我真的想尝试playn,但为什么有一些帖子我似乎无法找到解决方案的共识答案.有人说Sun从64位jdk中删除了一些东西,其他人说你必须编辑你的xml文件,很多人说你已经改变了你的JAVA_HOME,另一个人说你必须改变Eclipse的VM选项.
任何有关清除此功能的帮助都会受到赞赏,并且可能对许多人有用,因为我这里没有特别奇怪的设置.
(编辑)这是第一个项目中的pom.xml.Eclipse标记行中的错误:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-project</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<artifactId>playn-android</artifactId>
<name>PlayN Android</name>
<packaging>jar</packaging>
<repositories>
</repositories>
<dependencies>
<dependency>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- needed because Android uses the same JSON code as playn-java;
that should be factored into a library shared by both backends -->
<dependency>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-java</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${android.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
Kan*_*uri 53
我刚贴过关于这个问题,这个同样的问题,以及如何解决我的,但我会糊(和扩展),在这里为好,因为它似乎更相关.
在Windows 7中使用Eclipse时遇到了同样的问题,即使我在Eclipse设置中从JRE列表中删除了JRE,并且只是在那里使用了JDK.
我最终要做的事情(正如你在你的问题中提到的那样)是修改我用来启动Eclipse的快捷方式的命令行,以便像这样添加-vm参数:
-vm "T:\Program Files\Java\jdk1.6.0_26\bin"
Run Code Online (Sandbox Code Playgroud)
当然,则需要调整指向的bin目录你的 JDK安装.这样做是因为Eclipse本身使用JDK而不是JRE运行,然后它能够tools.jar正确地找到它.
我相信这与Eclipse在没有指定时发现默认JRE的方式有关.我猜它倾向于更喜欢JRE而不是JDK(为什么,我不知道)并且找到它发现的第一个兼容的JRE.如果像Vladiat0r的回答所暗示的那样,它会关闭Windows注册表项,它HKLM\Software\JavaSoft\Java Runtime Environment首先会找到密钥,而不是HKLM\Software\JavaSoft\Java Development Kit密钥.
Cri*_*ado 24
我在开发一个简单的Web服务应用程序时遇到了同样的麻烦,在我的情况下,我必须添加一个codehous插件才能获得jaxws库.但是,maven pom继续询问工具jar文件.
我必须说上面的评论是正确的,你可以在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>
Run Code Online (Sandbox Code Playgroud)
但是,当您必须部署到生产实例时会发生什么?您可以使用对系统环境变量的引用来替换路径,但这仍然看起来不太好,至少对我而言.
我在StackOverflow注释中找到了另一个解决方案:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
他们建议包括一个工具罐的排除声明,它的工作原理.总结一下:您可以在依赖项中包含排除规则,并避免出现tool.jar问题:
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
Run Code Online (Sandbox Code Playgroud)
小智 23
我遇到了同样的问题,我能够解决它的方式是将依赖位置添加tools.jar到pom.xml.像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
确保<systemPath>将tools 更改为tools.jar文件所在的位置.
eis*_*eis 14
没有其他答案为我做了.在eclipse中检查pom.xml的"依赖层次结构"是什么,给过滤器"工具"显示我对tools.jar有一个真正的依赖:
所以对我来说,罪魁祸首是:
<dependency>
<groupId>com.github.markusbernhardt</groupId>
<artifactId>robotframework-selenium2library-java</artifactId>
<version>1.4.0.7</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
添加排除修复了它:
<dependency>
<groupId>com.github.markusbernhardt</groupId>
<artifactId>robotframework-selenium2library-java</artifactId>
<version>1.4.0.7</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
排除似乎没有任何缺点.
我也遇到了同样的问题
可能是由于以下任何一个原因 -->

与我和Windows 7一样.我最后添加了两行eclipse.ini:
-vm
C:\Program Files\Java\jdk1.6.0_35\bin
Run Code Online (Sandbox Code Playgroud)
我试过%JAVA_HOME%在那里使用,但它没有用.
小智 6
我在Eclipse 4.3设置中解决了这个问题 - 只是将JDK库添加到JRE的库中.
转到窗口 - >设置 - > Java - >安装JRE - >选择JDK并单击编辑 - >单击添加外部JAR并添加tools.jar(放在JDK/lib中)
检查您机器上的 JDK 版本,pom.xml两者应该相同
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.8.0_192\lib\tools.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155059 次 |
| 最近记录: |