2011-06-23 6 views
2

Je reçois: Could not find the main class: org.dav.kin.Tester. Program will exit. lorsque je tente de lancer mon fichier jar via java -jar tester.jaroujava -classpath tester.jar org.dav.kin.Tester Est-ce que quelqu'un sait ce qui ne va pas et comment y remédier? Ci-dessous sont des détails supplémentaires. Merci.pot ne peut pas trouver la classe principale

fichier Manifest:

Manifest-Version: 1.0 
Created-By: DKin 
Class-Path: . 
Main-Class: org.dav.kin.Tester 

pot tf tester.jar

org/ 
org/dav/ 
org/dav/kin/ 
org/dav/kin/Tester.class 
org/dav/kin/TesterCellRenderer.class 
... 
... 
META-INF/ 
META-INF/MANIFEST.MF 

MISE À JOUR:

fichier Jar fonctionne si je spécifie le système classpath, qui contient le groovy-all-{version}.jar, li ke so: java -classpath tester.jar;"%CLASSPATH%" org.dav.kin.Tester Quelqu'un sait pourquoi je dois explicitement ré-indiquer le classpath (ou plus précisément, le pot groovy)?

+1

Afficher la sortie de ' jar tf tester.jar' –

+0

assurez-vous que la dernière ligne est "Main-Class: org.dav.kin.Tester \ r \ n", juste une nouvelle ligne ne fonctionne pas de façon fiable. –

Répondre

0

Votre fichier jar ne dispose pas d'un fichier avec ce nom

/org/dav/kin/Tester.class 

ou si vous avez des caractères spéciaux dans votre fichier MANIFEST.MF

fichiers MANIFEST.MF ont une syntaxe particulière. Il est préférable d'utiliser d'autres outils pour les générer. Cependant, certains des détails que j'ai rencontrés qui augmentent le succès des fichiers manuscrits comprennent:

  1. Assurez-vous toujours que les lignes ont moins de 72 caractères.
  2. Toujours utiliser \ r \ n (windows newline), même sur les systèmes autres que Windows.
  3. Vérifiez que tous les espaces sont des espaces.
  4. Vérifiez qu'il n'y a pas de caractères non imprimables (htab, etc.).
  5. Parfois, une ligne vide à la fin du fichier aide.
0

Est-ce que la déclaration de paquet Tester.class est org.dav.kin?

+0

Oui, le fichier source 'Tester' contient la déclaration de paquetage' org.dav.kin'. – dakin

0

Vous avez indiqué que vous utilisez Groovy. Groovy compile vers les fichiers de classe Java, mais il nécessite toujours les bibliothèques d'exécution groovy. Vous devez vous assurer que groovy est sur le classpath ainsi que vos classes. Essayez ceci:

java -classpath tester.jar;groovy-all-1.8.0.jar org.dav.kin.Tester 
+1

Ma variable système "CLASSPATH" inclut "groovy-all-1.8.0.jar". Cependant, le fichier jar ne s'exécute que si je spécifie le classpath système, qui inclut le fichier java groovy comme suit: 'java -classpath tester.jar;"% CLASSPATH% "org.dav.kin.Tester' – dakin

0

Juste au cas où. Je viens de résoudre exactement le même problème. Au lieu de

Class-Path: . 

dans MANIFEST.MF

on doit énumèrent (avec espace) pots qui sont nécessaires à l'exécution, il devrait donc être quelque chose comme ceci:

Class-Path: groovy-all-2.4.5.jar relative/my-dependent-project-artifact.jar 
Questions connexes