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
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
Essayez ceci, cela a fonctionné pour moi.
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).
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 ...
Une autre explication possible: défaillance matérielle. Éliminé si vous pouvez reproduire l'erreur sur différentes machines.
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");
}
}
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
J'ai résolu ceci par
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
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 ...
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.
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).