2015-10-20 85 views
7

当添加的Arquillian到Maven构建我得到在Eclipse上面的例外:缺少神器 “sun.jdk:JConsole的:坛子:JDK”

缺少神器sun.jdk:JConsole的:坛子:JDK

<dependency> 
     <groupId>org.jboss.arquillian.junit</groupId> 
     <artifactId>arquillian-junit-container</artifactId> 
     <version>1.1.7.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.arquillian.extension</groupId> 
     <artifactId>arquillian-persistence-dbunit</artifactId> 
     <version>1.0.0.Alpha7</version> 
    </dependency> 

(该消息是没有问题的,但Eclipse的拒绝编译,因为它的项目。Maven的工作的。)

当然,我做的第一件事是想exclud从Maven依赖Ë它(wildfly-arquillian-container-managed就是依赖树国的依赖来自于):

<dependency> 
     <groupId>org.wildfly</groupId> 
     <artifactId>wildfly-arquillian-container-managed</artifactId> 
     <exclusions> 
      <exclusion> 
       <artifactId>jconsole</artifactId> 
       <groupId>sun.jdk</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

有没有变化。我试图用-vm C:\Program Files\Java\jdk1.8.0_60\bin启动Eclipse。并尝试在“首选项 - >已安装的JRE”中编辑JDK以在工具目录中包含JAR。但没有任何工作。

我该怎么办?

+0

我认为你的版本是错误的。没有“arquillian-junit-container”或“arquillian-persistence-dbunit”的'8.2.0.Final'版本。 –

+0

@ JamesR.Perkins是的,你是对的,我从父母的_pom.xml_复制了错误的版本。 –

+0

同样的问题在这里回答: [用Maven依赖关系构建路径问题(jconsole-jdk.jar)](http://stackoverflow.com/questions/25362127/build-path-issue-with-maven-dependencies-jconsole -jdk-jar) – zsizsik

回答

0

也许是一个比解决方案更多的解决方法,无论如何我通过删除pom中的配置文件“activebydefault”来解决这个问题。这样,Eclipse不会抱怨“缺少工件sun.jdk:jconsole:jar:jdk”,但JUnit测试不会在Eclipse中运行 - 因为我仅使用maven测试进行测试,而不是Eclipse嵌入式JUnit运行器,它只需要指定要运行哪个配置文件ID。

1

我花了一天的最好的时间来解决这个问题。简单的解决方案是使用maven手动安装缺少的jdk jar,如下所示:

c:\ workspace \ prism> mvn install:install-file -Dfile = C:\ java \ jdk \ lib \ jconsole.jar -DgroupId = sun.jdk -DartifactId = jconsole -Dversion = 1.8 -Dpackaging = war。

谁知道为什么日食不能做到这一点...

7

我把我的依赖这样的,它工作正常:

<dependency> 
     <groupId>org.jboss.arquillian.junit</groupId> 
     <artifactId>arquillian-junit-container</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.wildfly</groupId> 
     <artifactId>wildfly-arquillian-container-embedded</artifactId> 
     <version>8.1.0.CR1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.7.15</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Arquillian --> 

    <dependency> 
     <groupId>org.wildfly</groupId> 
     <artifactId>wildfly-embedded</artifactId> 
     <version>8.1.0.CR1</version> 
     <exclusions> 
      <exclusion> 
       <groupId>sun.jdk</groupId> 
       <artifactId>jconsole</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>test</scope> 
    </dependency> 

请参阅排除标签是在“wildfly嵌入”依赖...

不要忘记命令“mvn install”,然后在项目和“Maven Update”中单击右键,如果它不起作用,请尝试删除文件夹“〜/ .m2/repository”并下载所有再次依赖。

+0

它对我有用@Mateus Pegoraro – ffSouza

3

Alastair,thx为解决问题。原因在于瞬态依赖org.wildfly的pom:wildfly-cli(8.2.0.Final)。在那里,你可以找到以下的依赖声明:

<dependency> 
      <groupId>sun.jdk</groupId> 
      <artifactId>jconsole</artifactId> 
      <version>jdk</version> 
      <scope>system</scope> 
      <systemPath>${java.home}/../lib/jconsole.jar</systemPath> 
</dependency> 

其实,瓶子位于$ {java.home} /lib/jconsole.jar。离幸运只有两点:-)

P.S .:版本也不够。所以,我从我的本地Maven仓库中删除了这个版本。

1

我在Windows机器上工作时遇到了这个问题。该项目本身在我的Ubuntu机器中工作得很好。然而,该项目的构建失败,正是由于短暂的org.wildfly:wildfly-ejb依赖性导致的。

缺少神器sun.jdk:JConsole的:坛子:JDK

我不觉得需要的项目配置,它应该只是在所有环境,因此在Windows环境下工作的优良改变本身一定是错的。我首先想到的是,Eclipse本身以某种方式使用JRE而不是JDK。

所以我在CMD签java -version,它似乎指向/Program Files文件夹中安装的地方,而我一直都手动安装的JDK中/Java文件夹中的JRE。然后我检查了Windows设置中的%PATH%环境变量。它似乎包括一个/ProgramData/Oracle/Java/javapath。该文件夹包含几个符号连接到/Program Files文件夹中的JRE。这实际上被用来启动Eclipse并运行其所有任务。当我删除它(在%PATH%设置中已经有一个JDK/bin进一步下降)并重新启动Eclipse并重新执行Maven构建时,错误消失。

无需对pom.xml或Eclipse配置进行更改。只要注意Windows的所有安装和更新,并检查您的%PATH%是否仍然有JDK。

+0

我在Eclipse中编译WildFly时出现同样的问题。 –

2

问题的原因是jconsole.jar是jdk的一部分,因此它不是作为普通的maven包分发的。

通常,项目pom.xml将此jconsole.jar作为系统包插入,即它甚至不尝试从中央Maven回购站下载它们。尽管这样也可以分发它。

问题的最简单的解决方案是使用包含此jconsole.jar的jdk。

或者,您可以从任何地方下载此jar,只有您必须在编译类路径中使其可访问。

或者,您也可以修改pom.xml,或者手动将软件包安装到您本地的maven仓库中,如同其他答案状态一样。