私はjunitテストケースを実行しています
次のエラーが発生しました、
A fatal error has been detected by the Java Runtime Environment:
Internal Error (classFileParser.cpp:3174), pid=2680, tid=2688
Error: ShouldNotReachHere()
JRE version: 6.0_18-b07
Java VM: Java HotSpot(TM) Client VM (16.0-b13 mixed mode windows-x86 )
どんな体でも解決するための解決策を提案してください
私は同じ問題を抱えていましたが、たくさんのグーグルで答えを見つけました! このページを参照
リンクからの引用:
# An unexpected error has been detected by Java Runtime Environment:
#
# Internal Error (classFileParser.cpp:2924), pid=5364, tid=6644
# Error: ShouldNotReachHere
これを試してみてください、それは私のために働きました。
これをSunで取り上げる必要があります-私にはJVMのバグのように見えます。再現可能であれば、Javaを実行して、より詳細な情報(-verboseなど)を生成できるはずです)。バグを引き起こす最小限のケースに減らすことができれば(ソースコードは常に役立ちます!)、それも非常に長い道のりです。
http://Java.Sun.com/developer/technicalArticles/bugreport_howto/index.html
http://bugreport.Sun.com/bugreport/crash.jsp
それまでの間、別のJVM実装(Sun JREの古いパッチレベルでも)で試してみることをお勧めします。
Run As-> Run Configurations ...に移動し、使用している構成を選択します。
クラスパスタブを選択し、BootStrapエントリを選択します。
Advanceをクリックし、次にAdd Libraryをクリックして、JRE System Libraryを選択します。
それを起動して、BootstrapEntriesリストの最初のエントリにします。
適用して実行...
別の考えられる説明:ハードウェア障害。別のマシンでエラーを再現できるかどうかは除外されました。
私は最近、この問題の解決策を見つけました。これは devdanke :によって投稿されました。
「2010年7月11日およびAndroid 2.1の時点で、私が使用する回避策は、テストを異なるクラスに分離することです。Android APIは独自のクラスに入ります。これらのクラスごとに、[実行構成]の[クラスパス]タブでAndroid]への参照を削除します。 "
クラスごとに構成することの問題は、プロジェクト内のすべてのテストを実行することは不可能です。より良いアプローチは、異なるライブラリセットを使用して2つのテストプロジェクトを作成することです。
標準Android JUnitテストプロジェクトは リンク のように作成でき、サンプルテストクラスは次のようになります。
import Android.test.AndroidTestCase;
public class ConverterTest extends AndroidTestCase {
public void testConvert() {
assertEquals("one", "one");
}
}
次に、JUnitテストプロジェクトをAndroid JUnitテストプロジェクトから変換するには、プロジェクトビルドパスからAndroidライブラリを削除し、JREシステムライブラリとJUnit 3ライブラリを追加します。サンプルテストクラスは次のようになります。
import junit.framework.TestCase;
public class ConverterTest extends TestCase{
public void testConvert() {
assertEquals("one", "one");
}
}
同様の問題が発生しました。これは、main []スタブエントリを使用して新しいアクティビティを生成したことが原因であることがわかりました。新しいアクティビティtemplatyeからmain []コードを削除すると、エラーはなくなりました。
YMMV
私はこれを解決しました
あなたがあなたの問題の解決策に到達できたかどうかはわかりませんが、私が直面している同じ問題の解決策を探しているときにあなたの質問がポップアップしました。そして、私はスタック自体から1つの解決策を得たので、それが何らかの手段であなたを助けるなら、あなたとリンクを共有することを考えました。リンクは以下の通りです:
[実行]-> [構成の実行]-> [クラスパス]-> [ブートストラップエントリ]に移動します。[詳細]、[ライブラリの追加]の順にクリックし、最初のエントリとして[JREシステムライブラリ]を選択します。適用して実行...
これはJVMのバグである可能性があります。 @Zacの回答を参照してください。ただし、junitテストケースが原因で破損したバイトコードファイルがロードされている可能性もあります。すべての.class
ファイルを再構築してみてください。それでも問題が解決しない場合は、コードが依存している外部ライブラリを再フェッチしてみてください。
サポートされているプラットフォーム(Windows、数少ないLinuxバージョンの1つ)で実行していますか?そうでない場合は、それが最初に試行されます。
サポートされているプラットフォームを使用している場合は、_17にダウングレードして、それが役立つかどうかを確認してください。
次に、Sunにバグレポートを作成し、いつか修正されることを期待します(修正のためのお金を早く提供したい場合を除く)。