Подтвердить что ты не робот

Внутренняя ошибка (javaClasses.cpp: 129)

Я пытаюсь запустить тест с JUnit 4 и Robolectric на Eclipse, но все время получаю эту ошибку:

Invalid layout of java.lang.String at value
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (javaClasses.cpp:129), pid=3546, tid=140317899335424
#  fatal error: Invalid layout of preloaded class
#
# JRE version: 7.0_07-b10
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.3-b01 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#

Мой тест очень прост. Это только для проверки всей работы:

@RunWith(RobolectricTestRunner.class)
public class FormatTest {

    @Test
    public void getFormatElapsedTimeOnSecondsTest(){
        assertEquals("3seg","3seg");
    }
}

Java, установленный в моей системе:

java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

Я не понимаю, что произойдет.

4b9b3361

Ответ 1

Возможно, это не ваша проблема, но я смог обойти это, используя приложение "Запустить как → Android".

Однако я не уверен, что вы используете андроид или нет. Возможно, проверьте конфигурацию Запуск для других проблем.

Ответ 2

Вам нужно скорректировать конфигурацию запуска.

Если вы хотите запустить JUnit-тест с помощью

"right click on test class in the package explorer"->"Run As"->"JUnit Test"

в проекте Android, вам нужно установить "Android JUnit Test Launcher" в качестве запуска. Вы используете эту пусковую установку Android, даже если ваша конфигурация запуска имеет тип "JUnit".

Вы можете найти его под:

"right click on test class in the package explorer"->"Properties"->"Run/Debug Settings"->"Edit..." 


Пример:

Тест:

import junit.framework.TestCase;

public class ExampleTest extends TestCase{
public ExampleTest(String name){
    super(name);
}

protected void setUp() throws Exception{
    super.setUp();
}

protected void tearDown() throws Exception{
    super.tearDown();
}

public void testFoo(){
    fail("Not yet implemented");
}

}

Создайте конфигурацию запуска:

"Run"->"Run Configurations..."->"Right click on JUnit"->"New"->"Set project and Test class"->"Select Android JUnit Test Launcher"->"Run"

Примечание. Если вы используете x86 jdk, вы получите следующую ошибку, если ваша Launcher установлена ​​в "Eclipse JUnit Launcher":

    Invalid layout of java.lang.String at value
    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  Internal Error (javaClasses.cpp:129), pid=3844, tid=4828
    #  fatal error: Invalid layout of preloaded class
    #
    # JRE version: 7.0_17-b02
    # Java VM: Java HotSpot(TM) Client VM (23.7-b01 mixed mode windows-x86 )
    # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

Ответ 3

Для меня было решение: Запустить → Запустить конфигурации... → на вкладке Тестовый клик Выбрать предпочтительный пуск и выбрать Использовать настройки конфигурации с выбором Android JUnit Test Launcher.

Удалить все записи в JUnit (левый столбец диалога Run Configurations, RightMouse - Delete).

Затем Запустить как → Тест JUnit и выберите Использовать настройки конфигурации с помощью Android JUnit Test Launcher.

Ответ 4

Щелкните правой кнопкой мыши класс java с основными, запустите конфигурацию, затем перейдите на вкладку classpath, удалите там библиотеку android. затем запустите.

Надеюсь, это поможет.

Ответ 5

Это проще. Got to Run- > Configuration и найдите JUnit и Android JUnit Tests. Удалите конфигурацию, если она есть. Затем в следующий раз, когда вы нажмете "Запустить", он спросит о настройке. Вы выбираете первый JUnit, а затем в следующем диалоговом окне активируете "Использовать настройки конфигурации", а затем выберите Android JUnit Test Laucher.

Ответ 6

Такая же проблема возникла и для меня, и причина заключалась в том, что я добавил основной (String s []) метод в мой проект Android.

Поэтому просто удалите основной (String s []) метод из проекта и запустите в качестве приложения для Android.