web-dev-qa-db-ja.com

アーティファクト「Sun.jdk:jconsole:jar:jdk」がありません

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>

(メッセージは問題ではありませんが、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> 

変化はありませんでした。 Eclipseを-vm C:\Program Files\Java\jdk1.8.0_60\binで起動しようとしました。そして、「設定->インストールされたJRE」でJDKを編集して、ツールディレクトリにJARを含めようとしました。しかし、何も機能しません。

私に何ができる?

10
Steffi S.

私はこのように依存関係を置き、それはうまくいきます:

<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-embedded」依存関係にあることを確認してください...

「mvninstall」コマンドを実行し、プロジェクトと「Maven Update」で右ボタンをクリックすることを忘れないでください。それが機能しない場合は、フォルダー「〜/ .m2/repository」を削除して、すべての依存関係を再度ダウンロードしてみてください。

12
Mateus Pegoraro

アラステア、問題を解決してくれてありがとう。原因は、一時的な依存関係org.wildfly:wildfly-cli (8.2.0.Final)のpomにあります。そこに次の依存関係宣言があります。

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

実際、jarファイルは${Java.home}/lib/jconsole.jarにあります。

追伸:バージョンも不十分です。そのため、このバージョンをローカルのMavenリポジトリから削除しました。

5
Olaf Kroh

私はWindowsマシンで作業しているときにこれに直面しました。プロジェクト自体は私のUbuntuマシンで完全に正常に機能しました。ただし、プロジェクトのビルドは、一時的なorg.wildfly:wildfly-ejb依存関係によって引き起こされた、まさにそのメッセージで失敗しました。

アーティファクトがありませんSun.jdk:jconsole:jar:jdk

プロジェクトの構成を変更する必要があるとは感じませんでした。すべての環境で正常に機能するはずであり、Windows環境自体が間違っていたに違いありません。私が最初に考えたのは、Eclipse自体が何らかの形でJDKではなくJREを使用しているということでした。

そこで、CMDでJava -versionを確認しましたが、/Program FilesフォルダーにJDKを手動でインストールしているのに、/JavaフォルダーのどこかにインストールされているJREを指しているようです。次に、Windowsの設定で%PATH%環境変数を調べました。 /ProgramData/Oracle/Java/javapathが含まれているようです。そのフォルダーには、/Program Filesフォルダー内のJREへのシンボリックリンクがいくつか含まれていました。したがって、これは実際にEclipseを起動し、そのすべてのタスクを実行するために使用されていました。それを削除し(JDK/bin設定のさらに下に%PATH%がすでにありました)、Eclipseを再起動してMavenビルドを再実行すると、エラーはなくなりました。

Pom.xmlまたはEclipseの構成を変更する必要はありません。バックグラウンドですべてのWindowsがインストールおよび更新されていることに注意し、%PATH%がまだJDKを上に持っているかどうかを確認してください。

2
BalusC

この問題の理由は、jconsole.jarがjdkの一部であるため、通常のMavenパッケージとして配布されていないためです。

通常、プロジェクトpom.xmlsはこのjconsole.jarをシステムパッケージとして挿入します。つまり、中央のMavenリポジトリからダウンロードしようとさえしません。この方法でも配布することは可能ですが。

この問題の最も簡単な解決策は、このjconsole.jarを含むjdkを使用することです。

または、このjarをどこからでもダウンロードできます。コンパイルクラスパスで到達可能にする必要があるだけです。

または、pom.xmlを変更するか、他の回答の状態に応じて、パッケージをローカルのMavenリポジトリに手動でインストールすることもできます。

私はこの問題と戦うために一日の大部分を過ごしました。簡単な解決策は、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。

Eclipseがこれを実行できない理由を誰が知っていますか...

1

私は同じ問題に直面していましたが、これは私にとって完璧な解決策ではありませんでした。解決する手順:

  1. JDKの場所を正しく指しているかどうかを確認してください: echo $ Java_HOME
  2. IDE(mine is Eclipse)からpom.xmlを開き、依存関係階層を選択して、jconsoleを検索します。jconsoleが表示されている場合は、jconsoleが相互依存関係として指定され、パスが指定されていることがあるためです。認識できませんでした。jarを除外すると問題が解決します。

依存関係階層

相互依存jconsole

jconsoleを除く

0
Manjusha Nair

おそらく、適切な解決策というよりは回避策の方が多いでしょう。とにかく、pomのプロファイル「activebydefault」を削除することでこの問題を解決しました。このように、Eclipseは「Missingartifact Sun.jdk:jconsole:jar:jdk」について文句を言いませんが、JUnitテストはEclipseで実行されません-Eclipse組み込みJUnitランナーではなく、Mavenテストからのテストのみを使用するためです。 、実行するプロファイルIDを指定するだけです。

0
tarilabs