2012-09-05 12 views
11

私は、Eclipse上のJUnit 4とRobolectricでテストを実行しようとしているが、私はこのエラーが発生したすべての時間:内部エラー(javaClasses.cpp:129)

Invalid layout of java.lang.String at value 
# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# Internal Error (javaClasses.cpp:129), pid=3546, tid=140317899335424 
# fatal error: Invalid layout of preloaded class 
# 
# JRE version: 7.0_07-b10 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.3-b01 mixed mode linux-amd64 compressed oops) 
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 
# 

は私のテストは非常に簡単です。

@RunWith(RobolectricTestRunner.class) 
public class FormatTest { 

    @Test 
    public void getFormatElapsedTimeOnSecondsTest(){ 
     assertEquals("3seg","3seg"); 
    } 
} 

Javaが私のシステムにインストールされている:

java version "1.7.0_07" 
Java(TM) SE Runtime Environment (build 1.7.0_07-b10) 
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode) 

私が起こるかを理解していないこれは、すべての作業が唯一のチェックのためです。

+3

Javaがネイティブコードで例外を検出したときにクラッシュすることがあります。この[スレッド](http://mail.openjdk.java.net/pipermail/mlvm-dev/2010-May/001728.html)によれば、JavaのインストールとJUnitライブラリを更新することができます。 – aroth

+0

しかし、javaは1.7.0_07-b10がOracleの最新バージョンであるため、すでに更新されています。そしてJUnitも更新されました。それは4.10バージョンのMavenの依存です。 –

+0

代替ソリューションについてはhttp://stackoverflow.com/questions/13030111/fatal-error-invalid-layout-of-java-lang-string-at-valueも参照してください。 – kennytm

答えて

21

これは問題ではないかもしれませんが、Run As - > Android Applicationを使用してこれを越えることができました。

ただし、アンドロイドを使用しているかどうかはわかりません。他の問題については、実行構成をチェックしてください。

12

実行コンフィギュレーションを修正する必要があります。

あなたはアンドロイドプロジェクトの

"right click on test class in the package explorer"->"Run As"->"JUnit Test" 

でJUnitテストを実行したい場合、あなたはランチャーとして「AndroidのJUnitのテストランチャー」を設定する必要があります。 あなたの起動設定が "JUnit"タイプの場合でも、アンドロイドランチャーを使用しています。

あなたは下にそれを見つけることができます。

"right click on test class in the package explorer"->"Properties"->"Run/Debug Settings"->"Edit..." 


テスト:

import junit.framework.TestCase; 

public class ExampleTest extends TestCase{ 
public ExampleTest(String name){ 
    super(name); 
} 

protected void setUp() throws Exception{ 
    super.setUp(); 
} 

protected void tearDown() throws Exception{ 
    super.tearDown(); 
} 

public void testFoo(){ 
    fail("Not yet implemented"); 
} 

}

実行構成を作成します。

"Run"->"Run Configurations..."->"Right click on JUnit"->"New"->"Set project and Test class"->"Select Android JUnit Test Launcher"->"Run" 

お知らせ:

Invalid layout of java.lang.String at value 
    # 
    # A fatal error has been detected by the Java Runtime Environment: 
    # 
    # Internal Error (javaClasses.cpp:129), pid=3844, tid=4828 
    # fatal error: Invalid layout of preloaded class 
    # 
    # JRE version: 7.0_17-b02 
    # Java VM: Java HotSpot(TM) Client VM (23.7-b01 mixed mode windows-x86) 
    # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows 
0

は、それが簡単になります:あなたは、x86を使用している場合は、あなたのランチャーは、「EclipseのJUnitをランチャー」に設定されている場合は、次のエラーを取得しますをjdk。 Run-> Configurationに移動し、JUnitテストとAndroid JUnitテストを探します。設定があれば削除してください。次に実行をクリックすると、設定についての質問が表示されます。最初のJUnitを選択し、次のダイアログで「設定固有の設定を使用する」を有効にし、Android JUnit Test Laucherを選択します。

1

メイン、実行コンフィギュレーションでJavaクラスを右クリックして、クラスパスタブに移動してアンドロイドライブラリを削除します。実行します。

こちらがお役に立てば幸いです。私にとって

3

が解決した:実行 - >実行構成... - >タブのテストクリック選択優先ランチャーと選択使用構成の特定の設定の選択のAndroidのJUnitテストランチャー

JUnitの下のすべてのエントリを削除します(Run Configurationsダイアログの左の列、RightMouse - Delete)。

その後ランなど -> JUnitテストおよびオプションのAndroidのJUnitテストランチャーと使用構成の特定の設定を選択します。

0

私にも同じ問題が発生し、理由は私のアンドロイドプロジェクトにmain(String s [])メソッドを追加したことです。

したがって、main(String s [])メソッドをプロジェクトから削除し、Androidアプリケーションとして実行してください。