25

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

任何机构都可以提出解决方案吗

4

12 回答 12

44

我遇到了同样的问题,但是通过谷歌搜索我找到了答案!看到这个页面

引用链接:


# 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 配置类路径的引导条目中删除 Android 库
  2. 然后添加库,使用高级...按钮,并添加 JRE 系统库和 JUnit 3
  3. 应用并运行

试试这个,它对我有用。

于 2010-07-11T17:10:04.020 回答
3

转到Run As -> Run Configurations...并选择您正在使用的配置。
选择Class Path选项卡并选择BootStrap Entries
单击Advance,然后单击Add Library并选择JRE System Library
将其调出并使其成为 BootstrapEntries 列表中的第一个条目。

应用并运行...

于 2012-09-06T00:20:56.767 回答
3

您需要与 Sun 一起解决这个问题——在我看来,这就像一个 JVM 错误。如果它是可重现的,那么您应该能够以生成更多详细信息的方式运行 java(例如 -verbose 等)。如果您可以将其减少到触发错误的最小情况(源代码总是有帮助的!),那也有很长的路要走。

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

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

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

于 2010-03-30T06:11:00.247 回答
1

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

YMMV

于 2012-01-18T14:27:54.303 回答
1

另一种可能的解释:硬件故障。排除是否可以在不同的机器上重现错误。

于 2010-03-30T12:08:26.507 回答
1

我解决了这个问题

  • 退出日食
  • 删除项目中的bingen目录
  • 开始日食
  • 重建你的项目
于 2010-06-04T12:36:03.213 回答
1

我最近刚刚找到了devdanke发布的这个问题的解决方案:

“截至 2010 年 7 月 11 日和 Android 2.1,我使用的解决方法是将测试分成不同的类。任何不调用任何 Android API 的测试都进入它们自己的类。对于这些类中的每一个,我在他们的运行配置、类路径选项卡中删除了对 Android 的引用。”

逐类配置的问题是不可能在项目中运行所有测试。更好的方法是使用不同的库集创建 2 个测试项目。

可以通过以下链接创建标准 Android JUnit 测试项目,示例测试类如下所示:

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

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

import junit.framework.TestCase;
public class ConverterTest extends TestCase{
    public void testConvert() {
        assertEquals("one", "one");
    }   
}
于 2010-08-09T19:39:44.560 回答
0

转到 Run As -> Run Configurations->classpath->BootStrap Entries 单击 Advance,然后 Add Library 并选择 JRE System Library 作为第一个条目。应用并运行...

于 2013-02-13T12:04:36.723 回答
0

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

于 2010-03-30T11:40:25.377 回答
0

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

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

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

于 2010-03-30T11:43:11.967 回答
0

我不确定您是否能够为您的问题找到解决方案,但是当我为我面临的同一问题寻找解决方案时,您的问题刚刚出现。我从堆栈本身得到了一个解决方案,所以想与你分享一个链接,如果这对你有任何帮助的话。链接如下:

无法在 Eclipse Android 项目中运行 JUnit 4 测试用例

于 2013-05-21T05:34:06.627 回答
-1

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

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

于 2011-10-30T11:07:54.420 回答