Java运行时环境导致的致命错误

时间:2010-03-30 05:53:36

标签: java runtime-error

我正在执行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 )

任何人都可以建议解决方案

12 个答案:

答案 0 :(得分:44)

我遇到了同样的问题,但是有很多谷歌搜索我找到了答案! See this page

从链接引用:


# 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配置中,Classpath的Bootstrap条目删除Android库
  2. 然后使用“高级...”按钮添加库,并添加JRE系统库和JUnit 3
  3. 申请并运行

  4. 试试这个,它对我有用。

答案 1 :(得分:3)

你需要对Sun采取这种做法 - 对我来说看起来像一个JVM错误。如果它是可重现的,您应该能够以生成更多细节的方式运行java(例如-verbose等)。如果你可以将它减少到一个触发bug的最小情况(源代码总是有帮助!),这也有很长的路要走。

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

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

与此同时,您可能希望尝试使用不同的JVM实现(甚至可能是Sun JRE的较旧补丁级别)。

答案 2 :(得分:3)

转到运行方式 - > 运行配置... 并选择您正在使用的配置 选择类路径标签,然后选择 BootStrap条目 点击高级,然后添加资料库,然后选择 JRE系统资料库
提出它并使其成为BootstrapEntries列表中的第一个条目
申请并运行......

答案 3 :(得分:1)

另一种可能的解释:硬件故障。如果你可以在不同的机器上重现错误,则排除在外。

答案 4 :(得分:1)

我通过

解决了这个问题
  • 退出日食
  • 删除项目中的 bin gen 目录
  • 启动eclipse
  • 重建您的项目

答案 5 :(得分:1)

我刚刚找到devdanke发布的此问题的解决方案:

“截至2010年7月11日和Android 2.1,我使用的工作是将测试分成不同的类。任何不调用任何Android API的测试都会进入他们自己的类。这些类,我在其运行配置,类路径选项卡中删除了对Android的引用。“

然后无法在项目中运行所有测试,因此逐类配置它的问题。更好的方法是使用不同的库集创建2个测试项目。

可以在link之后创建标准Android JUnit Test项目,示例测试类如下所示:

import android.test.AndroidTestCase;
public class ConverterTest extends AndroidTestCase {
    public void testConvert() {
        assertEquals("one", "one");
    }   
}

然后通过从项目构建路径中删除Android库,添加JRE系统库和JUnit 3库,以及示例测试类如下所示,可以从Android JUnit Test项目转换JUnit Test项目:

import junit.framework.TestCase;
public class ConverterTest extends TestCase{
    public void testConvert() {
        assertEquals("one", "one");
    }   
}

答案 6 :(得分:1)

我遇到了类似的问题,我发现这是因为我使用main []存根条目生成了一个新活动。一旦我从新活动templatye中删除了main []代码,错误就消失了。

YMMV

答案 7 :(得分:0)

这可能是一个JVM错误;看@Zac的回答。但也可能是你的junit测试用例导致加载了损坏的字节码文件。尝试重建所有.class文件,如果这不能解决问题,请尝试重新获取代码所依赖的任何外部库。

答案 8 :(得分:0)

您是否在支持的平台上运行(Windows,少数几个Linux版本之一?)如果没有,那是第一个尝试的。

如果您在受支持的平台上,请降级到_17,看看是否有帮助。

然后向Sun报告错误并希望他们有一天会修复它(除非你想给他们钱以便更快地修复它)。

答案 9 :(得分:0)

转到运行方式 - >运行配置 - > classpath-> BootStrap条目 单击Advance,然后单击Add Library并选择JRE System Library作为第一个条目。 申请并运行......

答案 10 :(得分:0)

我不确定您是否能够为您的问题找到解决方案,但在我为同一个问题寻找解决方案时,您的问题刚刚出现。我从堆栈本身得到了一个解决方案,所以只要想与你分享一个链接,如果它无论如何都有助于你。链接如下:

Can't run JUnit 4 test case in Eclipse Android project

答案 11 :(得分:-1)

另一个可能的原因(供将来参考): 我不小心在我的代码中的main方法中复制,导致Eclipse将项目识别为java应用程序,从而使用该配置启动它。

为了解决这个问题,我进入了Run>运行配置...然后只需在左栏中选择它,然后从我在java应用程序中假定的main更改为我的android应用程序的主要活动。