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を含めようとしました。しかし、何も機能しません。
私に何ができる?
私はこのように依存関係を置き、それはうまくいきます:
<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」を削除して、すべての依存関係を再度ダウンロードしてみてください。
アラステア、問題を解決してくれてありがとう。原因は、一時的な依存関係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リポジトリから削除しました。
私は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を上に持っているかどうかを確認してください。
この問題の理由は、jconsole.jar
がjdkの一部であるため、通常のMavenパッケージとして配布されていないためです。
通常、プロジェクトpom.xml
sはこの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がこれを実行できない理由を誰が知っていますか...
私は同じ問題に直面していましたが、これは私にとって完璧な解決策ではありませんでした。解決する手順:
おそらく、適切な解決策というよりは回避策の方が多いでしょう。とにかく、pomのプロファイル「activebydefault」を削除することでこの問題を解決しました。このように、Eclipseは「Missingartifact Sun.jdk:jconsole:jar:jdk」について文句を言いませんが、JUnitテストはEclipseで実行されません-Eclipse組み込みJUnitランナーではなく、Mavenテストからのテストのみを使用するためです。 、実行するプロファイルIDを指定するだけです。