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

Java运行时环境导致的致命错误,java,runtime-error,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

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

任何人都可以提出解决方案吗?你需要和Sun讨论这个问题,我觉得这就像是JVM的bug。如果它是可复制的,那么您应该能够以生成更多细节的方式运行java(例如详细信息等)。如果你能把它减少到触发bug的最小程度(源代码总是有帮助的!),那也会有很大的帮助


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

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

您是否在受支持的平台(Windows,少数Linux版本之一)上运行。如果没有,请首先尝试

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


然后向Sun报告一个bug,并希望他们有一天能修复它(除非你想给他们钱让他们更快地修复)。

另一种可能的解释:硬件故障。如果您可以在不同的机器上复制错误,则排除此问题。

我通过

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

    • 我也遇到了同样的问题,但通过大量的谷歌搜索,我找到了答案

      引自链接:


    • 这是因为我们使用的是Android的JUnit存根实现。再次转到Run->runas->runconfigurations,在最近创建的JUnit配置类路径的引导条目中删除Android库
    • 然后添加库,使用高级。。。按钮,并添加JRE系统库和JUnit3
    • 申请并运行


    • 试试这个,它对我有用

      我最近找到了这个问题的解决方案,发布者是:

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

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

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

      import android.test.AndroidTestCase;
      public class ConverterTest extends AndroidTestCase {
          public void testConvert() {
              assertEquals("one", "one");
          }   
      }
      
      import junit.framework.TestCase;
      public class ConverterTest extends TestCase{
          public void testConvert() {
              assertEquals("one", "one");
          }   
      }
      
      然后,通过从项目构建路径中删除Android库,并添加JRE系统库和JUnit 3库,可以从Android JUnit测试项目转换JUnit测试项目,示例测试类如下所示:

      import android.test.AndroidTestCase;
      public class ConverterTest extends AndroidTestCase {
          public void testConvert() {
              assertEquals("one", "one");
          }   
      }
      
      import junit.framework.TestCase;
      public class ConverterTest extends TestCase{
          public void testConvert() {
              assertEquals("one", "one");
          }   
      }
      
      另一个可能的原因(供将来参考): 我不小心在代码中复制了一个main方法,导致Eclipse将该项目识别为java应用程序,从而使用该配置启动它


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

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


      YMMV

      转到运行方式->运行配置…并选择您正在使用的配置。
      选择类路径选项卡,然后选择引导条目 单击高级,然后添加库,然后选择JRE系统库
      打开它并将其作为BootstrapEntries列表中的第一个条目。


      应用并运行…

      转到运行方式->运行配置->类路径->引导条目 单击Advance,然后添加库并选择JRE系统库作为第一个条目。
      应用并运行…

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


      是否有损坏的字节码?导致JVM崩溃?你真的看到过这种情况吗?没有。但这是有道理的,而且不难检查。。。在他等待Sun回复时。你可以尝试JDK 6 update 20。类似于感谢你的提示!完美的完美的现在的问题是,为什么要在第一个位置添加它。太好了!在修复之前,我为Android应用程序创建的测试用例在智能手机上启动(但失败)。现在我可以在PC上运行一个常见的JUnit测试;)