内部错误(javaClasses.cpp:129)

时间:2012-09-05 00:41:09

标签: java eclipse testing junit

我正在尝试在Eclipse上使用JUnit 4和Robolectric进行测试但是我一直收到此错误:

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)

我不明白发生了什么。

6 个答案:

答案 0 :(得分:21)

这可能不是你的问题,但我可以通过使用Run As - >来解决这个问题。 Android应用程序。

但是,我不确定你是否使用了android。可能会检查运行配置是否存在其他问题。

答案 1 :(得分:12)

您需要更正运行配置。

如果要使用

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

在Android项目中,您需要将“Android JUnit Test Launcher”设置为启动器。 即使您的启动配置具有“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"

注意:如果您使用的是x86 jdk,如果您的Launcher设置为“Eclipse JUnit Launcher”,则会出现以下错误:

    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

答案 2 :(得分:3)

对我来说是解决方案:运行 - >在选项卡上运行配置... - > 测试点击选择首选启动器并选择使用配置特定设置,选择 Android JUnit测试启动器

删除JUnit下的所有条目(“运行配置”对话框的左栏; RightMouse - 删除)。

然后以运行方式运行 - > JUnit测试并选择使用Android JUnit Test Launcher 配置特定设置。

答案 3 :(得分:1)

右键单击带有main,run配置的java类,然后转到classpath选项卡,删除那里的android库。然后跑。

我希望这会有所帮助。

答案 4 :(得分:0)

它变得更容易。得到Run->配置并查找JUnit和Android JUnit测试。删除您的配置(如果有)。然后,当您下次单击“运行”时,它将询问有关配置的信息。首先选择JUnit,然后在下一个对话框中激活“使用配置特定设置”,然后选择Android JUnit Test Laucher。

答案 5 :(得分:0)

我遇到同样的问题,原因是我在我的android项目中添加了main(String s [])方法。

所以只需从项目中删除main(String s [])方法并作为Android应用程序运行。