Je suis intrigué par le processus d'exécution des programmes Java, peut-être que vous pouvez aider.java class pas trouvé malgré la fourniture d'un fichier jar
J'ai plusieurs fichiers .java dans ~/working_dir/org/project/
qui ont des fonctions principales, et je veux les empaqueter dans un pot pour les exécuter. Je fais:
cd ~/working_dir/org/projectname
javac -classpath $CLASSPATH *.java
cd ~/working_dir/
jar cf myjar.jar org/
Et puis essayez d'exécuter une des classes dans le pot en faisant: java -cp myjar.jar org.project.SomeClass
et obtenir
Exception in thread "main" java.lang.NoClassDefFoundError: org/project/SomeClass
Could not find the main class: org.project.SomeClass
Que dois-je faire de mal? Les classes compilent sans aucune erreur, et jar tf myjar.jar
montre qu'elles sont bien là. Pour autant que je sache, je n'ai pas besoin de créer un fichier manifeste parce que je fournis la classe à partir de laquelle je veux exécuter la fonction principale à l'exécution - ou est-ce que je me trompe ici?
Aide très appréciée!
Votre fichier org.project.SomeClass.java a un paquet 'org.project;' déclaration au sommet? – nos
Essayez d'afficher la sortie de 'jar tf myjar.jar'. Pour org.project.SomeClass à trouver, une entrée org/project/SomeClass.class doit être présente (avec exactement ce nom) –
oui, il y a une instruction 'package org.project;' et 'jar tf myjar.jar' le montre comme org/project/SomeClass –