缺少神器"sun.jdk:jconsole:jar:jdk"

Ste*_* S. 10 eclipse maven jboss-arquillian wildfly

将Arquillian添加到Maven构建时,我在Eclipse中获得了上述异常:

缺少神器sun.jdk:jconsole:jar: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>
Run Code Online (Sandbox Code Playgroud)

(消息不是问题,但Eclipse因为它而拒绝编译项目.不过Maven工作.)

当然,我做的第一件事就是尝试将其从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> 
Run Code Online (Sandbox Code Playgroud)

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

我能做什么?

小智 12

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

<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>
Run Code Online (Sandbox Code Playgroud)

看到排除标记位于"wildfly-embedded"依赖项中......

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


小智 5

阿拉斯泰尔,谢谢你解决这个问题.原因在于短暂依赖的pom org.wildfly: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>
Run Code Online (Sandbox Code Playgroud)

实际上,罐子位于${java.home}/lib/jconsole.jar.

PS:版本也不够.所以,我从我的本地maven存储库中删除了这个版本.


tar*_*abs 0

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