web-dev-qa-db-fra.com

Erreur fatale par l'environnement d'exécution Java

J'exécute un cas de test Junit

J'ai eu l'erreur suivante,

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 )

Tout organisme peut-il suggérer la solution à résoudre

25
siri

J'ai eu le même problème, mais avec beaucoup de googler j'ai trouvé la réponse! Voir cette page

Citation du lien:


# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (classFileParser.cpp:2924), pid=5364, tid=6644
#  Error: ShouldNotReachHere
  1. En effet, nous utilisons l'implémentation de stub JUnit d'Android. Allez dans Exécuter -> Exécuter en tant que> Exécuter à nouveau les configurations et dans la configuration JUnit récemment créée, les entrées Bootstrap de Classpath, supprimez Android Library.
  2. Ajoutez ensuite la bibliothèque en utilisant le bouton Avancé ..., puis ajoutez JRE System Library et JUnit 3.
  3. Appliquer et courir

Essayez ceci, cela a fonctionné pour moi.

44
Fredrik

Vous devrez aborder cette question avec Sun. Cela ressemble à un bogue de la machine virtuelle Java. S'il est reproductible, vous devriez pouvoir exécuter Java de manière à générer plus de détails (par exemple -verbose, etc.). Si vous pouvez le réduire à un cas minimal qui déclenche le bogue (le code source aide toujours!), Cela ira également très loin.

http://Java.Sun.com/developer/technicalArticles/bugreport_howto/index.html

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

En attendant, vous pouvez essayer de le faire avec une implémentation JVM différente (peut-être même avec un niveau de patch plus ancien du JRE Sun).

3
Zac Thompson

Allez dans Exécuter en tant que -> Exécuter les configurations ... et sélectionnez la configuration que vous utilisez.
Sélectionnez l'onglet Class Path et sélectionnez BootStrap Entries .
Cliquez sur Advance , puis Ajouter une bibliothèque et sélectionnez JRE System Library .
Affichez-le et faites-en la première entrée de la liste BootstrapEntries.

Appliquer et exécuter ...

3
isuru chathuranga

Une autre explication possible: défaillance matérielle. Éliminé si vous pouvez reproduire l'erreur sur différentes machines.

1
Michael Borgwardt

Je viens de trouver une solution à ce problème qui a été publiée par devdanke :

"Depuis le 11 juillet 2010 et Android 2.1, mon travail consiste à séparer les tests en différentes classes. Les tests qui n'appellent pas d'API Android entrent dans leurs propres classes. Pour chacune de ces classes, Je supprime la référence à Android dans leur configuration d'exécution, onglet Classpath. "

Le problème de l'avoir configuré classe par classe est alors impossible d'exécuter tous les tests dans le projet. Une meilleure approche consiste à créer 2 projets de test avec différents ensembles de bibliothèques.

Le projet de test Android JUnit Test standard peut être créé à l’aide de link , et l’exemple de classe de test ressemble à ceci:

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

Ensuite, le projet JUnit Test peut être converti à partir du projet Android JUnit Test en supprimant la bibliothèque Android du chemin de génération du projet et en ajoutant la bibliothèque système JRE, la bibliothèque JUnit 3 et un exemple de classe de test ressemblant à ceci:

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

J'ai eu un problème similaire, j'ai découvert que c'était parce que j'avais généré une nouvelle activité avec une entrée de talon [] principale. Une fois que j'ai supprimé le code principal [] de la nouvelle activité, l'erreur s'est résolue.

YMMV

1
Jeff Dyer

J'ai résolu ceci par

  • Quittez Eclipse
  • Supprimez les répertoires bin et gen de votre projet.
  • Démarrer Eclipse
  • Reconstruisez votre projet
1
Nick Craig-Wood

Je ne sais pas si vous avez été en mesure de trouver la solution à votre problème, mais votre question est apparue alors que je cherchais la solution au même problème que je rencontrais. Et j'ai eu une solution de la pile elle-même, donc juste pensé à partager un lien avec vous si cela vous aide de quelque façon que ce soit. Le lien est comme ci-dessous:

Impossible d'exécuter le scénario de test JUnit 4 dans le projet Android Eclipse

0
nidhi

Allez à Exécuter en tant que -> Exécuter les configurations-> classpath-> Entrées BootStrap. Cliquez sur Avancé, puis sur Ajouter une bibliothèque et sélectionnez JRE System Library comme première entrée. Appliquer et courir ...

0
abhi

Cela pourrait être un bogue de la machine virtuelle Java; voir la réponse de @ Zac. Mais il se peut également que votre scénario de test Junit entraîne le chargement d’un fichier de code secondaire corrompu. Essayez de reconstruire tous vos fichiers .class et, si cela ne résout pas le problème, essayez de récupérer de nouveau les bibliothèques externes dont dépend votre code.

0
Stephen C

Exécutez-vous sur une plate-forme prise en charge (Windows, une des nombreuses versions de Linux?). Dans la négative, c’est la première tentative.

Si vous êtes sur une plate-forme prise en charge, rétrogradez à _17 et voyez si CELA vous aide.

Faites ensuite un rapport de bogue à Sun et espérez qu'il le corrigera un jour (à moins que vous ne vouliez leur donner de l'argent pour le réparer plus rapidement).