Pas en mesure d'exécuter le fichier jar malgré CHEMIN et set CLASSPATH
Ma question est concernant, y compris les fichiers jar dans le chemin d'accès. Il dispose de 2 pièces.
1) je suis en train d'exécuter weka.jar jar fichier situé dans /home/andy/software/weka/weka.jar
De la variable de CHEMIN pointe vers ce fichier jar (c'est à dire /home/andy/software/weka/weka.jar) et donc ne CLASSPATH.
Cependant lorsque j'essaie d'exécuter le pot à l'aide de java -jar weka.jar j'obtiens un message d'erreur "Impossible d'accéder à jarfiles weka.jar".
Toutes les idées de ce qui se passe? Je suis sur Ubuntu Linux. J'ai regardé autour de dans la et il semble que je ne suis pas de faire tout ce qui est évidemment faux (puisque les deux PATH et CLASSPATH semblent être réglé correctement).
2)je voudrais être en mesure de mettre tous mes fichiers jar dans un seul répertoire et inclure ce répertoire dans mon chemin (au lieu de chaque pot individuel). Comment puis-je le faire?
Merci d'avance.
EDITION 1 -> Voici ma ligne de commande
andy@laptop:~$ export CLASSPATH=$CLASSPATH:/home/andy/research/software/weka/weka.jar
andy@laptop:~$ echo $CLASSPATH
:/home/andy/research/software/weka/weka.jar
andy@laptop:~$ java -jar weka.jar
Unable to access jarfile weka.jar
andy@laptop:~$ java weka.jar
Exception in thread "main" java.lang.NoClassDefFoundError: weka/jar
Caused by: java.lang.ClassNotFoundException: weka.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: weka.jar. Program will exit.
andy@laptop:~$
EDIT 2 -> j'ai changé la variable de CHEMIN pour pointer vers le répertoire '/home/andy/recherche/logiciel/weka/' et toujours "impossible d'accéder à jarfiles erreur"
- Essayez d'utiliser
$HOME
au lieu de~
? - Eh bien en fait j'ai utilisé le chemin d'accès complet: /home/andy/software/weka/weka.jar. Désolé à ce sujet.
- -pot signifie que le chemin sera ignorée
- vous ne pouvez mettre tous les fichiers jar dans un seul répertoire et inclure ce répertoire dans le chemin de classe que dans la version 6 de java et plus tard. Et vous devez utiliser le caractère générique de la notation.
- J'ai ajouté une réponse à votre problème. Mais ce que vous faites est. Essayez d'accéder à une classe nommée weka jar. Ce que java est en train de faire : "essayer de trouver un package nommé weka, à l'intérieur de ce paquet classe nommée pot, à l'intérieur de la classe principale de la méthode"
Vous devez vous connecter pour publier un commentaire.
1) -jar option de java désactive l'utilisation de CLASSPATH. Veuillez prendre un coup d'oeil à Réglage de la variable CLASSPATH de Weka
2) Classe entrées de chemin d'accès peut contenir le préfixe caractère générique , laquelle est considérée équivalente à la spécification d'une liste de tous les fichiers dans le répertoire avec l'extension .jar ou .JAR. Par exemple, le chemin de classe d'entrée de foo/ spécifie tous les fichiers JAR dans le répertoire nommé foo. Un classpath composé simplement de * se développe à une liste de tous les fichiers jar dans le répertoire courant. Jetez un oeil à Définition de la classe de chemin|Comprendre le chemin de classe de caractères génériques
Vous n'exécutez pas comme
Au lieu de vous donner le nom de l'une des classes à l'INTÉRIEUR du pot.
un exemple simple sans paramètre classpath :
un exemple simple à l'aide de set classpath:
Exemple plus compliqué:
Quand le bocal est dans le classpath cela signifie que la bibliothèque est disponible à la jvm. Lorsque vous souhaitez exécuter un fichier jar (exécuter principale de), vous avez encore besoin de fournir un chemin d'accès valide pour le fichier.
D'impossibilité d'accès *.jar signifie que java ne peut pas trouver ce fichier jar. Vous devez exécuter cette commande (java-jar weka.jar) à partir du dossier où votre bocal est situé, ou de corriger votre variable PATH. Il doit pointer vers le DOSSIER où le pot est placé, non pas directement le fichier jar.
en supposant que votre dans le même dossier que le
weka.jar
tous vous avez besoin est./
avant le bocal nom