2010-03-30 12 views
25

sto eseguendo un banco di prova JUnitErrore fatale per ambiente runtime Java

ho ottenuto il seguente errore,

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) 

Qualsiasi organismo può si prega di suggerire la soluzione per risolvere

+0

Si potrebbe provare JDK 6 aggiornamento 20. –

+0

Simile a [non è possibile eseguire JUnit 4 banco di prova in Eclipse] (http://stackoverflow.com/questions/2172152/ cant-run-junit-4-test-case-in-eclipse) – idbrii

risposta

3

Avrete bisogno prenderlo con Sun - mi sembra un bug JVM. Se è riproducibile, dovresti essere in grado di eseguire java in modo tale da generare più dettagli (ad es. -verbose, ecc.). Se riesci a ridurlo a un caso minimale che attiva il bug (il codice sorgente ti aiuta sempre!), Anche questo è molto lungo.

http://java.sun.com/developer/technicalArticles/bugreport_howto/index.html

http://bugreport.sun.com/bugreport/crash.jsp

Nel frattempo, si potrebbe desiderare di provare con un'implementazione JVM diversa (forse anche un livello di patch più vecchio del Sun JRE).

0

Questo potrebbe essere un bug JVM; vedere la risposta di @ Zac. Ma potrebbe anche essere che il tuo caso di test di junit stia causando il caricamento di un file bytecode corrotto. Prova a ricostruire tutti i tuoi file .class e se ciò non risolve il problema prova a recuperare qualsiasi libreria esterna da cui dipende il tuo codice.

+0

Un codice byte corrotto? Causare un arresto anomalo di JVM? Hai mai visto che succede? –

+0

No. Ma è plausibile, e non così difficile da controllare ... mentre aspetta che il Sole risponda. –

0

Si esegue su una piattaforma supportata (Windows, una delle poche versioni di Linux?) In caso contrario, è il primo da provare.

Se sei su una piattaforma supportata, esegui il downgrade a _17 e verifica se THAT aiuta.

Quindi fai un bug report a Sun e spera che lo aggiusteranno un giorno (a meno che tu non voglia dare loro i soldi per sistemarlo più velocemente).

1

Un'altra spiegazione possibile: errore hardware. Escludere se è possibile riprodurre l'errore su macchine diverse.

1

ho risolto questo

  • Quit eclissi
  • Eliminare il bin e gen directory nel progetto
  • Inizio eclissi
  • Rigenerare il progetto
44

I ha lo stesso problema, ma con un sacco di googling ho trovato la risposta! See this page

Citazione dal link:


# An unexpected error has been detected by Java Runtime Environment: 
# 
# Internal Error (classFileParser.cpp:2924), pid=5364, tid=6644 
# Error: ShouldNotReachHere 
  1. Questo perché stiamo usando implementazione JUnit stub di Android. Vai a Esegui -> Esegui come -> Esegui nuovamente le configurazioni e nella configurazione JUnit appena creata Classpath's Bootstrap Entries rimuovi libreria Android
  2. Quindi aggiungi libreria, utilizzando Avanzate ...pulsante e aggiungere JRE Sistema Bibliotecario e JUnit 3
  3. Applicare ed eseguire

Prova questa, ha funzionato per me.

+1

questo ha lavorato per me almeno ................ Grazie ........... +1 a voi – viv

+0

Grazie per il suggerimento! Perfezionare! – guerda

+0

Perfetto. Ora la domanda è perché questo viene aggiunto in primo luogo. – pitx3

1

Ho da poco trovato una soluzione per questo problema che è stato pubblicato dal devdanke:.

"A partire dal 11 luglio 2010 e Android 2.1, il lavoro intorno che uso è quello di separare i test in diverse classi Qualsiasi prova (s) che non chiamano le API Android vanno nelle proprie classi. Per ognuna di queste classi, rimuovo il riferimento ad Android nella loro configurazione Run, scheda Classpath. "

Il problema con l'averlo configurato classe per classe non è quindi possibile eseguire tutti i test nel progetto. Un approccio migliore sta creando 2 progetti di test con diversi set di librerie.

progetto

standard Android JUnit test può essere creato dopo link, e classe di test del campione si presenta come:

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

Poi progetto JUnit test può essere convertita da progetto Android JUnit test rimuovendo libreria Android dal progetto di percorso di generazione, e l'aggiunta di JRE sistema Bibliotecario, e JUnit 3 biblioteca e classe di test del campione si presenta come:

import junit.framework.TestCase; 
public class ConverterTest extends TestCase{ 
    public void testConvert() { 
     assertEquals("one", "one"); 
    } 
} 
-1

Un'altra possibile ragione (per i riferimenti futuri): avevo accidentalmente copiato in un metodo principale nel mio codice, facendo in modo che Eclipse riconosca il progetto come applicazione java, avviandolo quindi con quella configurazione.

Per risolverlo sono andato su Esegui> Esegui configurazioni ... e poi ho cambiato dalla mia presunta principale in applicazione java all'attività principale della mia applicazione Android semplicemente scegliendolo nella colonna di sinistra.

1

Ho avuto un problema simile, ho scoperto che era perché avevo generato una nuova attività con una voce di stub principale []. Una volta cancellato il codice principale [] dalla nuova attività templatye, l'errore è andato via.

YMMV

2

Vai Esegui come -> Esegui Configurazioni ... e selezionare la configurazione che si sta utilizzando.
Selezionare la scheda Percorso classe e selezionare voci BootStrap.
Fare clic su Advance, quindi Aggiungi libreria e selezionare Libreria di sistema JRE.
Portalo su e rendilo la prima voce nella lista BootstrapEntries.

Applica e Esegui ...

0

Vai per l'esecuzione come -> Esegui Configurazioni-> classpath-> Voci di bootstrap Cliccare sulla Advance, quindi aggiungere Biblioteca e selezionare JRE Sistema Bibliotecario come prima voce. Applicare ed eseguire ...

0

io non sono sicuro se sono stati in grado di raggiungere la soluzione al vostro problema o no, ma la tua domanda appena spuntato, mentre ero alla ricerca di una soluzione per lo stesso problema che sto affrontando. E ho ottenuto una soluzione dallo stack stesso, quindi ho pensato di condividere un link con te se questo ti aiuta con qualsiasi mezzo. Il link è il seguente:

Can't run JUnit 4 test case in Eclipse Android project