web-dev-qa-db-ja.com

Javaランタイム環境による致命的なエラー

私は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 )

どんな体でも解決するための解決策を提案してください

25
siri

私は同じ問題を抱えていましたが、たくさんのグーグルで答えを見つけました! このページを参照

リンクからの引用:


# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (classFileParser.cpp:2924), pid=5364, tid=6644
#  Error: ShouldNotReachHere
  1. これは、AndroidのJUnitスタブ実装を使用しているためです。 [実行]-> [実行]-> [構成の実行]に移動し、最近作成されたJUnit構成でクラスパスのBootstrapエントリを削除Androidライブラリ
  2. 次に、[詳細...]ボタンを使用してライブラリを追加し、JREシステムライブラリとJUnit3を追加します。
  3. 適用して実行

これを試してみてください、それは私のために働きました。

44
Fredrik

これをSunで取り上げる必要があります-私にはJVMのバグのように見えます。再現可能であれば、Javaを実行して、より詳細な情報(-verboseなど)を生成できるはずです)。バグを引き起こす最小限のケースに減らすことができれば(ソースコードは常に役立ちます!)、それも非常に長い道のりです。

http://Java.Sun.com/developer/technicalArticles/bugreport_howto/index.html

http://bugreport.Sun.com/bugreport/crash.jsp

それまでの間、別のJVM実装(Sun JREの古いパッチレベルでも)で試してみることをお勧めします。

3
Zac Thompson

Run As-> Run Configurations ...に移動し、使用している構成を選択します。
クラスパスタブを選択し、BootStrapエントリを選択します。
Advanceをクリックし、次にAdd Libraryをクリックして、JRE System Libraryを選択します。
それを起動して、BootstrapEntriesリストの最初のエントリにします。

適用して実行...

3

別の考えられる説明:ハードウェア障害。別のマシンでエラーを再現できるかどうかは除外されました。

1

私は最近、この問題の解決策を見つけました。これは 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");
    }   
}
1
volody

同様の問題が発生しました。これは、main []スタブエントリを使用して新しいアクティビティを生成したことが原因であることがわかりました。新しいアクティビティtemplatyeからmain []コードを削除すると、エラーはなくなりました。

YMMV

1
Jeff Dyer

私はこれを解決しました

  • Eclipseを終了します
  • プロジェクト内のbinおよびgenディレクトリを削除します
  • Eclipseを起動します
  • プロジェクトを再構築します
1
Nick Craig-Wood

あなたがあなたの問題の解決策に到達できたかどうかはわかりませんが、私が直面している同じ問題の解決策を探しているときにあなたの質問がポップアップしました。そして、私はスタック自体から1つの解決策を得たので、それが何らかの手段であなたを助けるなら、あなたとリンクを共有することを考えました。リンクは以下の通りです:

EclipseでJUnit4テストケースを実行できませんAndroidプロジェクト

0
nidhi

[実行]-> [構成の実行]-> [クラスパス]-> [ブートストラップエントリ]に移動します。[詳細]、[ライブラリの追加]の順にクリックし、最初のエントリとして[JREシステムライブラリ]を選択します。適用して実行...

0
abhi

これはJVMのバグである可能性があります。 @Zacの回答を参照してください。ただし、junitテストケースが原因で破損したバイトコードファイルがロードされている可能性もあります。すべての.classファイルを再構築してみてください。それでも問題が解決しない場合は、コードが依存している外部ライブラリを再フェッチしてみてください。

0
Stephen C

サポートされているプラ​​ットフォーム(Windows、数少ないLinuxバージョンの1つ)で実行していますか?そうでない場合は、それが最初に試行されます。

サポートされているプラ​​ットフォームを使用している場合は、_17にダウングレードして、それが役立つかどうかを確認してください。

次に、Sunにバグレポートを作成し、いつか修正されることを期待します(修正のためのお金を早く提供したい場合を除く)。