2010-11-07 8 views
1

J'ai téléchargé un fichier xSocket.jar qui sera utilisé comme classpath et compilera myprogram.jar, tous deux dans le dossier Java. L'ajout d'un chemin de classe dans Manifest est-il possible de trouver xSocket.jar sans avoir besoin de définir un -cp dans la ligne de commande?Classpath dans le manifeste

Dans mon commandline D:\> emplacement, j'ai essayé de courir java -jar java\myprogram.jar -n 0

Exception in thread "main" java.lang.NoClassDefFoundError: org/xsocket/connectio 
n/IBlockingConnection 
     at myprogram.main(myprogram.java:114) 
Caused by: java.lang.ClassNotFoundException: org.xsocket.connection.IBlockingCon 
nection 
     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) 
     ... 1 more 

Mon Manifest dans myprogram.jar:

Manifest-Version: 1.0 
Created-By: 1.6.0_22 (Sun Microsystems Inc.) 
Main-Class: myprogram 
Class-Path: xSocket 

Répondre

2

Vous devez spécifier le nom complet du fichier jar à savoir avec l'extension. Vérifiez here pour plus d'informations.

Class-Path: xSocket.jar 
+0

Oui, ça a marché! Pas étonnant, je passais 2 jours pour que mon application Flash NativeProcess fonctionne car il y a un bug qui est incapable d'exécuter Jar avec -cp correctement. Mais puis-je déclarer classpath dans le chemin absolu? Tels que "D: \ java \ xSocket.jar" sans la double citation? – Proyb2

1

ajoute un classpath Manifest capable trouver xSocket.jar sans la nécessité de définir un -CP commandline?

Oui, c'est comme ça.

Vous devez modifier la valeur de votre laissez-passer de classe myprogram.jar à

Class-Path: relatedPath/xSocket.jar

+0

hmm, si les deux jar sont dans le même dossier, je dois toujours ajouter relatedPath? Pourquoi? – Proyb2

+1

@ user217582: si les deux jars sont dans le même dossier, le chemin relatif est une chaîne vide (et une barre oblique n'est pas nécessaire bien sûr). Btw, différents pots sont séparés par l'espace. – Roman

+0

Great, j'ai une autre question, et si je dois déclarer 2 ou plus classpath par différents dossiers, comment peut-il être fait? et comment puis-je déclarer pour plusieurs pots aussi? En utilisant * "un astérisque avec une double citation? Désolé, je suis un peu paresseux à lire Java car je suis occupé avec beaucoup de projets Actionscript. – Proyb2