Фатальная ошибка средой выполнения Java

Я выполняю 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 )

Может любое тело предлагать решение решить

25
задан Valentin Rocher 30 March 2010 в 11:55
поделиться

7 ответов

Другое возможное объяснение: сбой оборудования. Исключено, если можно воспроизвести ошибку на разных машинах.

1
ответ дан 28 November 2019 в 20:43
поделиться

Это может быть ошибка JVM; см. ответ @Zac. Но также может быть, что ваш тестовый пример junit вызывает загрузку поврежденного файла байт-кода. Попробуйте перестроить все ваши файлы .class , и, если это не решит проблему, попробуйте повторно загрузить все внешние библиотеки, от которых зависит ваш код.

0
ответ дан 28 November 2019 в 20:43
поделиться

Используете ли вы поддерживаемую платформу (Windows, одну из нескольких версий Linux?) Если нет, попробуйте это в первую очередь.

Если вы используете поддерживаемую платформу, перейдите на _17 и посмотрите, поможет ли ЭТО.

Затем отправьте отчет об ошибке в Sun и надейтесь, что они когда-нибудь исправят его (если вы не хотите дать им деньги за более быстрое исправление).

0
ответ дан 28 November 2019 в 20:43
поделиться

Вам нужно обсудить это с 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
ответ дан 28 November 2019 в 20:43
поделиться

Я решил эту проблему следующим образом

  • Выйти из eclipse
  • Удалить каталоги bin и gen в вашем проекте
  • Запустить eclipse
  • Пересобрать ваш проект
1
ответ дан 28 November 2019 в 20:43
поделиться

У меня та же проблема, но с большим количеством поисковых запросов. нашел ответ! См. Эту страницу

Цитата из ссылки:


# 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 записи Bootstrap пути к классам удалите библиотеку Android
  2. , затем «Добавить библиотеку», используя кнопку «Дополнительно ...», и добавьте системную библиотеку JRE и JUnit 3
  3. Применить и запустить

Попробуйте, у меня это сработало.

44
ответ дан 28 November 2019 в 20:43
поделиться

Совсем недавно я нашел решение этой проблемы, которое опубликовал devdanke:

"Начиная с 11 июля 2010 года и Android 2.1, я использую следующее решение: разделяю тесты на разные классы. Все тесты, которые не вызывают никаких API Android, помещаются в свои собственные классы. Для каждого из этих классов я удаляю ссылку на Android в их конфигурациях запуска, вкладка Classpath."

Проблема с конфигурированием класса за классом заключается в том, что тогда невозможно запустить все тесты в проекте. Лучший подход - создание двух тестовых проектов с разными наборами библиотек.

Стандартный проект Android JUnit Test может быть создан по ссылке, и пример тестового класса выглядит так:

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

Затем проект JUnit Test может быть преобразован из проекта Android JUnit Test путем удаления библиотеки Android из пути сборки проекта, и добавления системной библиотеки JRE, и библиотеки JUnit 3, и пример тестового класса выглядит так:

import junit.framework.TestCase;
public class ConverterTest extends TestCase{
    public void testConvert() {
        assertEquals("one", "one");
    }   
}
1
ответ дан 28 November 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: