Я выполняю 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 )
Может любое тело предлагать решение решить
Другое возможное объяснение: сбой оборудования. Исключено, если можно воспроизвести ошибку на разных машинах.
Это может быть ошибка JVM; см. ответ @Zac. Но также может быть, что ваш тестовый пример junit вызывает загрузку поврежденного файла байт-кода. Попробуйте перестроить все ваши файлы .class
, и, если это не решит проблему, попробуйте повторно загрузить все внешние библиотеки, от которых зависит ваш код.
Используете ли вы поддерживаемую платформу (Windows, одну из нескольких версий Linux?) Если нет, попробуйте это в первую очередь.
Если вы используете поддерживаемую платформу, перейдите на _17 и посмотрите, поможет ли ЭТО.
Затем отправьте отчет об ошибке в Sun и надейтесь, что они когда-нибудь исправят его (если вы не хотите дать им деньги за более быстрое исправление).
Вам нужно обсудить это с Sun - мне кажется, это ошибка JVM. Если он воспроизводимый, вы должны иметь возможность запускать java таким образом, чтобы генерировать более подробную информацию (например, -verbose и т. Д.). Если вы можете уменьшить его до минимального случая, который вызывает ошибку (исходный код всегда помогает!), Это также имеет очень большое значение.
http://java.sun.com/developer/technicalArticles/bugreport_howto/index.html
http://bugreport.sun.com/bugreport/crash.jsp
А пока вы можете захотеть чтобы попробовать его с другой реализацией JVM (возможно, даже с более старым патчем Sun JRE).
Я решил эту проблему следующим образом
У меня та же проблема, но с большим количеством поисковых запросов. нашел ответ! См. Эту страницу
Цитата из ссылки:
# An unexpected error has been detected by Java Runtime Environment:
#
# Internal Error (classFileParser.cpp:2924), pid=5364, tid=6644
# Error: ShouldNotReachHere
Попробуйте, у меня это сработало.
Совсем недавно я нашел решение этой проблемы, которое опубликовал 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");
}
}