Comment faire pour exécuter une classe à partir d'un bocal avec de ligne de commande avec le chemin de classe spécifié
Je suis en train de lancer une classe à partir d'un BOCAL. Cette classe n'est PAS la seule classe principale dans ce pot. En outre, il exige certain nombre d'autres fichiers jar, que j'ai gardé dans le même répertoire que ce Pot. Les commandes que j'ai essayé sont comme suit:
(mydir est le répertoire dans lequel tous mes pots sont situés, à l'aide de la plate-forme Windows)
mysql-connector-java-5.1.13-bin.jar
est nécessaire pour myProjImport.jar
à exécuter et com.mycomp.myProj.importer.csv.TestImporter
est la classe je suis en train de lancer.
"C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties"
et "C:\temp\apollo_claims_test.txt"
sont les arguments de ligne de commande requis par la classe TestImporter
Voici ce que j'ai essayé:
mydir>java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;. myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties" "C:\temp\apollo_claims_test.txt"
Et voici l'erreur:
Exception in thread "main" java.lang.NoClassDefFoundError: myProjImport/jar
Caused by: java.lang.ClassNotFoundException: myProjImport.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: myProjImport.jar. Program will exit.
Quelqu'un peut-il me dire en quoi exactement la commande dois-je courir?
OriginalL'auteur Bhushan | 2011-05-05
Vous devez vous connecter pour publier un commentaire.
essayer:
java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties" "C:\temp\apollo_claims_test.txt
"à condition que votre exécution de ce à partir du même répertoire que myProjImport.jar
;
séparateur de Windows.opps dans ce cas: java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;myProjImport.jar com.mycomp.myProj.importateur.csv.TestImporter "C:\Documents and Settings\utilisateur\workspace\myProjImport\src\conf\source de données."propriétés "C:\temp\apollo_claims_test.txt
Grâce Karthik et ykaganovich, votre solution fonctionne. Karthik, veuillez en faire la correction qui ykaganovich a suggéré- ';' au lieu de ':' depuis que c'est pour Windows plate-forme.
OriginalL'auteur Karthik Ramachandran
Quand -jar option est spécifiée, toutes les autres du chemin de classe, les options sont ignorées. Si cela ne fonctionne pas:
Mais si vous les placez foo.jar nom dans META-INF/manifest.mf au sein de MyJar.jar:
Puis l'foo.jar seront recherchés sur le même niveau que MyJar.jar, c'est à dire dans le même répertoire.
Parfois, je viens de déballer tout dépendant de Pots et de leur contenu dans le pack MyJar.jar. Moins de dépendance de cette façon.
Le côlon est important.
Je ne veux pas être coupable de java bashing, mais pourquoi? pourquoi? pourquoi? je ne peux pas spécifier la catégorie "extra" les chemins lors de l'exécution d'un pot??
OriginalL'auteur Vladimir Dyuzhev