2009-09-15 4 views
2

J'essaie d'exécuter les exemples de tests fournis avec junit4.7 et ayant quelques difficultés.Junit et Java classpath woes - OS X

java respecte mon CLASSPATH:

[email protected] ~/Desktop> export CLASSPATH= 
[email protected] ~/Desktop> echo $CLASSPATH 

[email protected] ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests 
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner 
[email protected] ~/Desktop> source /etc/profile 
[email protected] ~/Desktop> echo $CLASSPATH 
:/Library/Java/Extensions/junit/:/Library/Java/Extensions/junit/junit.jar 
[email protected] ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests 
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/Test 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:164) 
    at junit.runner.BaseTestRunner.loadSuiteClass(BaseTestRunner.java:207) 
    at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:100) 
    at junit.textui.TestRunner.start(TestRunner.java:179) 
    at junit.textui.TestRunner.main(TestRunner.java:138) 

mais comme vous pouvez le voir, il est incapable de trouver junit/framework/Test ... Je regardais dans le /Library/Java/Extensions/junit/junit.jar et il est inclus, cependant.

/Library/Java/Extensions/junit/junit.jar est un lien symbolique. Est-ce OK?

+0

que se passe-t-il si vous ajoutez un -classpath var à la ligne de commande et spécifiez le jar directement? – akf

+0

avec -cp et un $ CLASSPATH non renseigné Je reçois les mêmes résultats, même sans utiliser le lien symbolique. – ashgromnies

Répondre

5

Essayez de placer le fichier junit JAR directement dans le répertoire Extensions au lieu de créer un sous-répertoire pour celui-ci. Je viens de copier JUnit-4.6.jar dans le dossier/Library/Java/répertoire extenstions et exécuté la classe TestRunner sans problème

% java junit.textui.TestRunner 
Usage: TestRunner [-wait] testCaseName, where name is the name of the TestCase class 

Supprimer la bibliothèque à partir des résultats du répertoire des extensions dans l'exception prévue

 
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner 
-1

Il est possible que l'utilisation d'un lien symbolique cause votre problème. Essayer d'ajouter le jar sur lequel pointe le lien symbolique et réessayer. Toutefois, en regardant le java man page for mac os x, il ne semble pas y avoir une telle restriction.

+0

Je l'ai fait sans le lien symbolique et je reçois toujours le même problème. – ashgromnies

0

Quelques choses à enquêter sur:

est le fichier junit.jar à l'emplacement que vous spécifiez, et est-il lisible? CLASSPATH est-il exporté par/etc/profile? Cela fonctionne-t-il lorsque vous définissez "-cp $ CLASSPATH" à la place sur la ligne de commande? Essayez de supprimer le premier colon dans le classpath - ne devrait pas être là.

+0

Oui, junit.jar existe avec les permissions 755. CLASSPATH est exporté par/etc/profile. Désactiver CLASSPATH et utiliser -cp me donne les mêmes résultats. Le côlon principal ne semble pas l'affecter non plus. – ashgromnies

5

Ok, je viens de télécharger JUnit 4.7, décompressé le fichier zip, répertoire changé dans le dossier et a couru la commande suivante avec succès:

$ java -cp .:junit-4.7.jar junit.textui.TestRunner junit.samples.AllTests 
......................................... 
......................................... 
......................................... 
....... 
Time: 3.255 

OK (130 tests)

C'était sur OSX.

Je pense que dans votre exemple, votre chemin de classe est un peu foiré. Essayez ceci:

.:/Library/Java/Extensions/junit:/Library/Java/Extensions/junit/junit.jar

Voir les différences? J'ai ajouté le . (répertoire courant) et j'ai enlevé la barre oblique finale du répertoire junit.

MISE À JOUR: Je viens de tester avec un lien symbolique et qui semble fonctionner aussi:

$ ln -s junit-4.7.jar junit.jar 
$ java -cp .:junit.jar junit.textui.TestRunner junit.samples.AllTests 
......................................... 
......................................... 
......................................... 
....... 
Time: 2.569 

OK (130 tests) 
3

Avez-vous construit le JAR-vous? Cela ressemble à la JAR est construit sans annotation.

Si vous compilez le JUnit avec

javac -proc none ... 

Vous obtiendrez cette erreur.