Je suis exécuter le binaire java d'un de mes cours, et un ClassNotFoundException est jeté:Je ne comprends pas pourquoi ce ClassNotFoundException est jeté
Results of executing:/usr/bin/java -classpath "/home/geo" Geoline
Error stream:
Exception in thread "main" java.lang.NoClassDefFoundError: Geoline
Caused by: java.lang.ClassNotFoundException: Geoline
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
Could not find the main class: Geoline. Program will exit.
Output stream:
La classe Geoline est situé dans/home/geo/Geoline.java. La chose est, peu importe où dans le système de fichiers je suis situé, si j'exécute la même commande manuellement, la classe est exécutée. Pourquoi la même chose ne se passe-t-elle pas lorsque le binaire est exécuté avec Runtime.getRuntime(). Exec?
modifier: est ici la sortie générée avec le drapeau verbeux: pastie link modifier: est ici le contenu du fichier:
public class Geoline {
public static void main(String[] args) {
System.out.println("blabla");
}
}
Pourquoi citez-vous le fichier .java? Je déteste poser une question "stupide", mais l'avez-vous compilé dans un fichier .class? Et est le répertoire où le chemin /home/geo/Geoline.class vit dans le CLASSPATH? – duffymo
Oui, c'est compilé. La compilation a lieu avant l'action d'exécution. Le chemin -class "/ home/geo" ne le charge-t-il pas dans le CLASSPATH? – Geo
Est-ce que la classe a un paquet? Si oui, c'est le répertoire où réside la racine du paquet qui doit être dans CLASSPATH. Si non, ajoutez-en un. Les classes sans package sont triviales. – duffymo