我正在执行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 )
任何人都可以建议解决方案
答案 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 :(得分: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)
我通过
解决了这个问题答案 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)
我不确定您是否能够为您的问题找到解决方案,但在我为同一个问题寻找解决方案时,您的问题刚刚出现。我从堆栈本身得到了一个解决方案,所以只要想与你分享一个链接,如果它无论如何都有助于你。链接如下:
答案 11 :(得分:-1)
另一个可能的原因(供将来参考): 我不小心在我的代码中的main方法中复制,导致Eclipse将项目识别为java应用程序,从而使用该配置启动它。
为了解决这个问题,我进入了Run>运行配置...然后只需在左栏中选择它,然后从我在java应用程序中假定的main更改为我的android应用程序的主要活动。