2009-08-24 5 views
0

J'ai essayé pendant deux jours maintenant de compiler mon application java à partir de la ligne de commande dans Ubuntu. Je sais que j'ai Java installé parce que je peux exécuter mes applications dans Eclipse & Netbeans et ils fonctionnent bien. Mais si je veux compiler mes applications à partir de la ligne de commande je reçois le message d'erreur suivant:Pourquoi ne puis-je pas compiler mes applications Java en utilisant Ubuntu?

javac Main.java

Everythings bien, aucune erreur ou quoi que ce soit. Alors je tente:

java Main

Je reçois ce message d'erreur:

Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: input/Main) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:637) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
    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: Main. Program will exit.

Répondre

2

Essayez:

java input.Main 

par les regards de votre erreur, votre classe principale est dans le paquet "entrée" . Vous devez spécifier le nom du paquet lors de l'exécution d'une classe, pas le nom du fichier.

+1

Et courir à partir de ce répertoire qui contient le répertoire 'input' plutôt que le répertoire' input' lui-même (qui devrait contenir 'Main.class'). –

0

Cela ressemble à un problème Classpath classique. Eclipse et Netbeans configureront le chemin de classe pour vous, mais lorsque vous écrivez en ligne de commande, vous êtes seul.

En supposant que vous utilisez BASH, essayez de taper la commande suivante dans la ligne de commande:

CLASSPATH=/path/to/your/java/class/file 

Ou, alternativement, vous pouvez le faire à partir de la ligne de commande java:

java -cp /path/to/your/java/class/file Main 

Suivre this link pour plus d'informations.

EDIT: Eh bien, je vois que vous l'avez compris. Félicitations.

0

Le classloader ne trouve tout simplement pas l'entrée de classe.

La classe doit être située dans le répertoire ./input, le fichier dans ce répertoire doit s'appeler Main.class et la commande java doit être 'java input.Main'.

1

Ouvrir le terminal et collez cette commande:

export CLASSPATH=.:/usr/local/tomcat/common/lib/jsp-api.jar:/usr/local/tomcat/common/lib/servlet-api.jar:/home/trenog/javokapi/bin/xmlrpc.jar 
+0

Cela n'a rien à voir avec Tomcat. –

Questions connexes