Je suis perplexe par cette erreur:
java.lang.NoClassDefFoundError: junit/framework/TestCase at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:792) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClassHoldingLock(ClasspathManager.java:638) ... at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:62) at org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:23) ... Caused by: java.lang.ClassNotFoundException: junit.framework.TestCase cannot be found by org.eclipse.xtext.junit_2.4.3.v201309030823 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 78 more
L’exception se produit lorsque j’exécute les tests pour mon Xtext DSL en tant que tests de plug-in (c’est-à-dire lorsqu’une nouvelle plate-forme Eclipse est démarrée en interne). Cela se produit avant qu’aucun de mes codes ne soit exécuté.
Quand je regarde les dépendances du plugin, je peux voir que org.junit_4.11.0.v201303080030.jar
est sur le org.junit_4.11.0.v201303080030.jar
et je vois aussi /.../workspace/.metadata/.plugins/org.eclipse.pde.core/.external_libraries/org.junit_4.11.0.v201303080030/junit.jar
Donc, OSGis devrait certainement être capable de résoudre cette dépendance.
Xtext 2.4.3 fonctionne-t-il avec JUnit 4.11 ou dois-je rétrograder mon installation Eclipse vers JUnit 4.10?
Deux points
Premier
Vérifiez les Project Properties->Java Build Path->Libraries (tab)
votre Project Properties->Java Build Path->Libraries (tab)
. JUnit devrait être là bien que cela apparaisse généralement dans la construction.
Vérifiez les Run Configurations->JUnit->Classpath (tab
). JUnit doit être sous les entrées utilisateur pour votre projet.
Seconde
Vérifiez que vous avez des plugins ci-dessous
org.eclipse.xtext.xbase.junit org.junit (3.8.2) org.junit (4.8.2)
[EDIT] Cela m’a mis sur la bonne voie. Pour corriger l’erreur, assurez-vous d’avoir org.junit 3.8 sur la plate-forme cible !
Explication: L’erreur ci-dessus signifie qu’Eclipse lui-même n’a pas pu démarrer. Il semble que le coureur JUnit ait une dépendance sur JUnit 3.8. Il ne sera pas utilisé mais sans cela, toute la plate-forme ne peut pas être initialisée.
Vous pouvez voir si vous avez le même problème en consultant la trace de stack: contient-elle RemotePluginTestRunner.main
?
Pour corriger l’erreur, ajoutez le kit org.junit 3.8 à votre plate-forme cible.
Créez une classe avec le code ci-dessous dans votre projet-
import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; public class TestJunitLib { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void test() { fail("Not yet implemented"); } }
Lors de la sauvegarde si Eclipse indique des erreurs de compilation. Appuyez sur Ctrl + 1 (Correction rapide) et sélectionnez l’un des choix ci-dessous.
a) Ajouter la bibliothèque jUnit 4 au chemin de construction b) Corriger la configuration du projet
Si un n’apparaît pas, il manque le plug-in jUnit 4 dans votre installation Eclipse. Dans ce cas, google pour savoir comment installer jUnit dans Eclipse.
Vous avez peut-être des problèmes non résolus dans votre fichier pom.xml. Ouvrez la vue des problèmes à résoudre en conséquence. Ensuite, idéalement, vous pourrez exécuter les tests avec succès sans rencontrer l’exception classnotfoundexception.
Deux endroits possibles à vérifier pour plus de détails:
javap -classpath
jar que vous avez mentionné ( jar tvf
ou javap -classpath
et spécifiez le javap -classpath
JAR), puis vérifiez sa dépendance. eclipse.ini
dans eclipse.ini
des variables d’initialisation qui pourraient éventuellement être corrigées.