【问题标题】:Fatal error by Java runtime environmentJava 运行时环境的致命错误
【发布时间】:2010-03-30 05:53:36
【问题描述】:

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

请任何机构提出解决方案

【问题讨论】:

标签: java runtime-error


【解决方案1】:

我遇到了同样的问题,但通过谷歌搜索我找到了答案! 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 Entries 中删除 Android 库
  2. 然后添加库,使用高级...按钮,并添加 JRE 系统库和 JUnit 3
  3. 应用并运行

试试这个,它对我有用。

【讨论】:

  • 感谢您的提示!完美!
  • 完美。现在的问题是为什么首先添加它。
  • 太棒了!在您修复之前,我为 Android 应用程序创建的测试用例在智能手机上启动(但失败了)。现在我可以在 PC 上运行普通的 JUnit 测试了;)
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    应用并运行...

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我解决了这个问题

        • 退出 Eclipse
        • 删除项目中的 bingen 目录
        • 启动 Eclipse
        • 重建您的项目

        【讨论】:

          【解决方案6】:

          我最近刚刚找到了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");
              }   
          }
          

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

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

          【讨论】:

            【解决方案7】:

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

            YMMV

            【讨论】:

              【解决方案8】:

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

              【讨论】:

              • 字节码损坏?导致JVM崩溃?你真的见过这种情况吗?
              • 没有。但这是有道理的,而且在他等待 Sun 回应时,检查起来并不难。
              【解决方案9】:

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

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

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

              【讨论】:

                【解决方案10】:

                转到运行方式->运行配置->类路径->BootStrap Entries 单击 Advance,然后单击 Add Library 并选择 JRE System Library 作为第一个条目。 应用并运行...

                【讨论】:

                  【解决方案11】:

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

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

                  【讨论】:

                    【解决方案12】:

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

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-12-11
                      • 1970-01-01
                      • 2014-08-06
                      相关资源
                      最近更新 更多