25

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

誰でも解決策を提案できますか

4

12 に答える 12

44

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

リンクから引用:


# 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 構成クラスパスのブートストラップ エントリで Android ライブラリを削除します。
  2. 次に、[詳細...] ボタンを使用してライブラリを追加し、JRE システム ライブラリと JUnit 3 を追加します。
  3. 適用して実行

これを試してみてください、それは私にとってはうまくいきました。

于 2010-07-11T17:10:04.020 に答える
3

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



于 2012-09-06T00:20:56.767 に答える
3

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

http://java.sun.com/developer/technicalArticles/bugreport_howto/index.html

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

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

于 2010-03-30T06:11:00.247 に答える
1

別の考えられる原因: ハードウェア障害。別のマシンでエラーを再現できる場合は除外。

于 2010-03-30T12:08:26.507 に答える
1

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

YMMV

于 2012-01-18T14:27:54.303 に答える
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");
    }   
}

次に、プロジェクトのビルド パスから Android ライブラリを削除し、JRE システム ライブラリと JUnit 3 ライブラリを追加することで、JUnit テスト プロジェクトを Android JUnit テスト プロジェクトから変換できます。サンプル テスト クラスは次のようになります。

import junit.framework.TestCase;
public class ConverterTest extends TestCase{
    public void testConvert() {
        assertEquals("one", "one");
    }   
}
于 2010-08-09T19:39:44.560 に答える
1

私はこれを解決しました

  • 日食をやめる
  • プロジェクトのbinおよびgenディレクトリを削除します
  • 日食開始
  • プロジェクトを再構築する
于 2010-06-04T12:36:03.213 に答える
0

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

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

次に、Sun にバグ レポートを作成し、いつか修正されることを期待します (より迅速に修正するためにお金を渡したい場合を除きます)。

于 2010-03-30T11:43:11.967 に答える
0

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

于 2010-03-30T11:40:25.377 に答える
0

[Run As] -> [Run Configurations] -> [classpath] -> [BootStrap Entries] に移動します。[Advance]、[Add Library] の順にクリックし、最初のエントリとして [JRE System Library] を選択します。適用して実行...

于 2013-02-13T12:04:36.723 に答える
-1

別の考えられる理由(将来の参照用):コードのmainメソッドを誤ってコピーしたため、EclipseがプロジェクトをJavaアプリケーションとして認識し、その構成で起動しました。

それを解決するために、[実行]> [構成の実行...]に移動し、左側の列で選択するだけで、Javaアプリケーションの推定メインからAndroidアプリケーションのメインアクティビティに変更しました。

于 2011-10-30T11:07:54.420 に答える