内部错误(javaClasses.cpp:129)

我正在尝试在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) 

我不明白发生了什么。

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

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

您需要更正运行配置。

如果要运行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 

对我来说是解决方案: 运行 – >运行配置… – >选项卡测试单击选择首选启动器,然后选择使用选择Android JUnit Test Launcher的 配置特定设置

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

然后运行为 – > JUnit Test,并选择使用Android JUnit Test Launcher使用配置特定设置

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

我希望这有帮助。

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

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

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