(プロパティファイルが正しく読み込まれることを確認するために)junitテストを実行しようとしていますが、ClassNotFoundException
が表示されますが、クラスがあり、必要なライブラリもすべてあります。
ここに私が得るエラーがあります:
Class not found ConfigurationManagerTest Java.lang.ClassNotFoundException: ConfigurationManagerTest
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:200)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:188)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:268)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:251)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.Java:693)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.Java:429)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:452)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
これを修正する方法についてのアイデアはありますか?
ありがとう。
ConfigurationManagerTest
がクラスパスで見つかりません。 ConfigurationManagerTest.class
ファイルがクラスパスで利用可能であることを確認してください。
正常にコンパイルされなかった場合、またはEclipseプロジェクトがクラスパス上にあることを指定していないディレクトリに作成されている場合は、存在しない可能性があります。
テストクラスを別のフォルダーに配置したと仮定して、(ナビゲータービューではなく)[パッケージエクスプローラー]ビューに表示されることを確認します。
プロジェクトプロパティの[Java Build Path]および[Source]タブでは、ソースフォルダーがビルドに含まれているかどうか、および.classファイルが生成されている場所も確認できます。
もう1つの可能性があります。私は今も同じ問題を抱えていましたが、ここで解決できるものはありませんでした。プロジェクトの削除と再作成を除いて-私はそれを試したくありませんでした。助けになったのは、cleanプロジェクトtwo timesすぐに次々にしたことです!クリーン+ビルドは何回でも繰り返すことができます-それは助けにはなりません。 clean + cleanのみで、その後ビルドはOKです。 (Eclipse 3.6)。もちろん、そのために自動ビルドを無効にする必要があります。
編集:この投稿は、2017年11月15日に最後のプラスになりました。したがって、問題(および解決策)は実際のままです。
もう1つの考えられる問題は、ビルダーの欠落です(.classファイルがビルドされないようにします)。
.projectファイルに次の行があることを確認します
<buildSpec>
<buildCommand>
<name>org.Eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.Eclipse.jdt.core.javanature</nature>
</natures>
これは、テストクラスを別のパッケージにドラッグアンドドロップしたときに起こりました。私は次のことをしました
ビンゴ!これでテストを実行できます!
プロパティ-> Javaビルドパス->ライブラリを確認します。エラーがないはずです。私の場合、Mavenにエラーがありました。必要なjarをMavenリポジトリに入れると、うまくいきました
ここで説明したすべての答えを試しましたが、どれも機能しませんでしたが、これを見つけました thread slomekは非常に簡単な方法で問題を解決します。プロジェクト->プロパティ-> Javaビルドパスに移動するだけです。次に、Junitを右下に押して、上に移動します。その後、すべてが正常にコンパイルされます。
私はこの問題を抱えていましたが、何が間違っているのかを理解するのはややトリッキーでした。プロジェクトにエラーが発生した依存関係プロジェクトがあり、ビルドの実行が停止しました。この依存関係の問題を取り除くと、プロジェクトは期待どおりにビルドされました。
追伸:DelphiからJavaに変換されたアプリケーションを移植しているので、コンパイルエラーが多いプロジェクトに取り組んでいます。そのため、最初はコンパイルエラーを気にしませんでした。問題を見つけるために。
ここや他の投稿で言及されているすべてを試しました。人々が提供したソリューションの一部は次のとおりです。
たくさんありましたが、私が見つけたものは次のとおりです。開発環境を閉じます。ローカルMavenリポジトリからプロジェクトで使用されているjarを削除します。 IDEを開きます。プロジェクトをビルドします。テストを実行します。
キーボードに対して頭をheadりつけ、提案された解決策に従った後、これはうまくいきました!
私のために働いたのは、テストの実行構成を削除することです。次に、testclassを右クリックし、「junitテストとして実行」をクリックします。
今、それは私のために正しい実行構成を再作成します。
これが展開できる別の方法は、Eclipseが通知しないビルドエラーがある場合です。単体テストのコンパイルに失敗した場合、.classファイルは存在せず、ClassNotFoundExceptionが発生します。
私の場合、サードパーティのjarファイルがありませんでした。テストを実行すると、「必要なプロジェクトにエラーが存在します」というポップアップウィンドウが表示されました。私は巨大なプロジェクトで働いており、私はalwaysそのメッセージを受け取ります。ソースの一部がEclipseで利用できないためです(長い話)。また、エラーが何であるかについても述べていません。そのため、[続行]をクリックすると、例外が発生します。
何が起こっているのか気づいたら、実行->構成のデバッグ...で不足しているjarをクラスパスに追加することで簡単に修正できます...
何かがうまくいかない場合にこの可能性を認識し、何が間違っている可能性があるかについて最新の変更を確認することを除いて、これを最善に検出または防止する方法がわかりません。
上記のソリューションレビューとしてこの回答を追加します。
.project
ファイルを編集するだけです。適切なXMLエディターを使用します。そうしないと、Eclipseからこのプロジェクトを開くことができないことを示すfatal error
を取得します。<nature>org.Eclipse.jdt.core.javanature</nature>
を<natures></natures>
に追加して、プロジェクトの性質をJava
にしました。<buildCommand><name>org.Eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand>
に正しくインデントされたこれらの行を<buildSpec></buildSpec>
に追加しました。Run as JUnit
... 成功このエラーは、最近新しいワークスペースを作成し、「インストールされたJRE」が正しくセットアップされなかったために表示されました。 Preferences -> Java -> Installed JREs
で、JDKのルートフォルダーが選択されていることを確認します。新しいワークスペースでの私のデフォルトは、何らかの理由でJREでした。
私も同じ例外に直面しましたが、インターネット上の解決策のどれも私を助けませんでした。私のプロジェクトには複数のモジュールが含まれています。私のJunitコードはWebモジュールにあります。そして、それはクライアントモジュールのコードを指します。
最後に、私は試してみました:(Webモジュール)プロジェクトを右クリック->ビルドパス->ソースタブ->リンクソース-> srcファイルの場所を追加(クライアントモジュール)
それでおしまい!それは魅力のように働いた
エクスプローラーでプロジェクトを右クリックします。ビルドパス->注文とエクスポート-> JREシステムライブラリ[jdk]を選択し、下ボタンをクリックします。
私はこれがかなり前にすでに回答されていることを知っていますが、答えは私のためにそれを修正しませんでしたが、私はビルドパス設定のソースからすべてを削除し、それらを再追加しました
Now:テストと関係のあるプラグイン(任意のプラグイン)である可能性を示唆するエラーがないか確認します。
私の場合:
推測に数時間を費やしました!.
テストクラスがビルドフォルダーにあることを確認しますか?別のJVMでjunitを呼び出しているため(fork = true)、その呼び出し中に作業フォルダーが変更され、ビルドが相対的な場合、問題が発生する可能性があります。
-verboseまたは-debugスイッチを使用して(Eclipseからではなく)コマンドラインからantを実行して、詳細なクラスパス/作業ディレクトリjunitが呼び出されていることを確認し、この問題を解決できない場合はここに結果を投稿します。
[パッケージエクスプローラー]ビューで、テストクラスを右クリックし、[ビルドパス] >> [含める]の順にクリックします。
私はこの問題を抱えていました。私の場合、問題はコンパイルに依存しており、mavenを使用していますが、テストクラスはコンパイルされませんでした。
Mavenインストール(すべてのファイルをコンパイルする)を行うことで修正しました。また、「実行構成」が時間を節約するためにテストをスキップするようなコンパイルのテストを回避する他の理由を確認できます。
上記のガイの回答のバリエーションで、追加のビルダーが含まれます。 Antビルダーが構成されているとします:
<buildSpec>
<buildCommand>
<name>org.Eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.Eclipse.ui.externaltools.ExternalToolBuilder</name>
<arguments>
<dictionary>
<key>LaunchConfigHandle</key>
<value><project>/.externalToolBuilders/myprojectantlaunch.launch</value>
</dictionary>
</arguments>
</buildCommand>
</buildSpec>
AntビルドとEclipseビルドの出力場所が異なる場合、Eclipseはクラスパスでテストクラスを見つけることができない場合があります。 Antビルダーの場合、ユニットテストをビルドするターゲットが呼び出されることを確認するために、クリーン、自動、手動、およびクリーン後のビルドの構成済みターゲットも確認します。
Mavenプロジェクトがある場合は、実行してみてください。
mvn clean compile
その後、Eclipseでプロジェクトをクリーン&ビルドします。
JunitsをデバッグするEclipse Heliosでも同様の問題がありました。私はJunitsを正常に実行できたため、同じJUNITをデバッグしているときにClassNotFoundExceptionが発生したため、私の問題は少し異なりました。
Stackoverflow.comや他のフォーラムで利用可能なあらゆる種類のソリューションを試しましたが、何も機能していないようです。これらの問題で2日近く頭を動かした後、最終的にその解決策を見つけました。
どのソリューションも機能していないようであれば、ワークスペースに作成された.metadataフォルダーを削除するだけです。これにより、プロジェクトのインポートおよび実行したあらゆる種類の構成の追加オーバーヘッドが発生しますが、これらは確実にこれらの問題を解決します。
これらが役立つことを願っています。
さらに別のバリエーション。
どういうわけか、以前働いていたテストクラスが他の場所から実行されているように見えました。テストを実行したときに編集内容が実行されませんでした。
$ {project_loc} src/test/Javaファイルの出力フォルダーが期待したものではないことがわかりました。誤って$ {project_loc} target/classesに設定されていました。プロジェクトプロパティJava Build Path、Sourceタブで適切に設定しました。