2012-09-05 16 views
11

Estoy intentando ejecutar una prueba con JUnit 4 y Robolectric en Eclipse, pero todos los tiempos recibo este error:Error interno (javaClasses.cpp: 129)

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 
# 

Mi prueba es muy fácil. Es sólo para revisar su trabajo:

@RunWith(RobolectricTestRunner.class) 
public class FormatTest { 

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

Java instalada en mi sistema es:

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) 

No entiendo lo que suceda.

+3

Se producen bloqueos de este tipo cuando Java encuentra una excepción en el código nativo. De acuerdo con este [hilo] (http://mail.openjdk.java.net/pipermail/mlvm-dev/2010-May/001728.html) es posible que desee actualizar su instalación de Java y su biblioteca JUnit. – aroth

+0

Pero java ya está actualizado porque 1.7.0_07-b10 es la última versión de Oracle. Y JUnit también se actualiza, es una dependencia de maven con la versión 4.10. –

+0

Vea también http://stackoverflow.com/questions/13030111/fatal-error-invalid-layout-of-java-lang-string-at-value para encontrar soluciones alternativas. – kennytm

Respuesta

21

Puede que este no sea su problema pero pude pasar esto usando la aplicación Ejecutar como -> Android.

Sin embargo, no estoy seguro de si está usando Android o no. Posiblemente, verifique la configuración de ejecución para otros problemas.

12

Debe corregir la configuración de ejecución.

Si desea ejecutar una prueba unitaria con

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

en un proyecto androide, es necesario establecer el "Android JUnit prueba Launcher" como lanzador. Tiene que utilizar ese iniciador de Android incluso si su configuración de inicio tiene el tipo "JUnit".

Se puede encontrar en:

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


Ejemplo:

prueba:

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"); 
} 

}

Crear serie de configuración:

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

Aviso: Si está utilizando un sistema x86 JDK que obtendrá el siguiente error si el lanzador está ajustado en "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 
0

No hace más fácil. Tengo que ejecutar-> Configuración y buscar JUnit y Android JUnit Pruebas. Elimina tu configuración si está allí. Luego, la próxima vez que haga clic en Ejecutar, le preguntará acerca de la configuración. Eliges primero JUnit y luego en el siguiente cuadro de diálogo activar "Utilizar configuración específica de la configuración" y luego elegir Android JUnit Test Laucher.

1

Haga clic con el botón derecho en la clase Java con las configuraciones principales, luego vaya a la pestaña classpath, elimine la biblioteca de Android allí. entonces corre.

Espero que esto ayude.

3

Para mí era la solución: Ejecutar -> Ejecutar configuraciones ... -> en la ficha Prueba clic Seleccionar preferidos Launcher y seleccionar valores específicos Uso de configuración con la selección Android JUnit prueba Launcher.

Elimine todas las entradas en JUnit (columna izquierda del diálogo Configuraciones de ejecución; RightMouse - Eliminar).

A continuación, en Ejecutar como -> JUnit prueba y opcionalmente seleccionar ajustes específicos Uso de configuración con Android JUnit prueba Launcher.

0

El mismo problema se me presentó y la razón fue que agregué el método principal (String s []) en mi proyecto de Android.

Así que simplemente elimine el método principal (String s []) del proyecto y ejecútelo como Aplicación para Android.

Cuestiones relacionadas