#1 Le 16/07/2009, à 15:22
- nanonico
[Résolu] [Java] Execution d'un .class dans un terminal
Bonjour,
Voila, c'est les vacances et j'ai décidé d'apprendre la programmation avec java.
Je suis donc un ultra débutant dans le domaine.
Mon problème est certainement basic même si c'est le language de Sun Microsystem :
Je n'arrive pas a executer dans un terminal un .class
voila le code, un simple "helloWorld" :
/*
* nom du fichier : helloWorld.java
*/
public class helloWorld {
public static void main(String args[]) {
System.out.println("hello world !");
}
La compilation se passe bien, avec cette commande :
javac /home/nanonico/workspace/hello_world/helloWorld.java
en revanche, l'execution ne fonctionne pas.
j'ai tenté toute une serie de combinaisons de commande, comme par exemple :
java /home/nico/workspace/hello_world/helloWorld.class
java /home/nico/workspace/hello_world/helloWorld
java "/home/nico/workspace/hello_world/helloWorld.class"
java "/home/nico/workspace/hello_world/helloWorld"
mais j'obtiens systématiquement ce message :
Exception in thread "main" java.lang.NoClassDefFoundError: /home/nico/workspace/hello_world/helloWorld
Caused by: java.lang.ClassNotFoundException: .home.nico.workspace.hello_world.helloWorld
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: /home/nico/workspace/hello_world/helloWorld. Program will exit.
J'en déduit que la machine virtuelle java ne vois pas ma class main.
Questions :
- Y a t'il une erreur dans le code ?
- Y a t'il une erreur dans la commande ?
note : Je ne peux pas utiliser eclipse, mon PC n'a pas assez de ressources.
Merci.
Dernière modification par ®om (Le 16/07/2009, à 15:54)
Tu t'exclus toi même du parti en disant cela
Hors ligne
#2 Le 16/07/2009, à 15:23
- ®om
Re : [Résolu] [Java] Execution d'un .class dans un terminal
cd ~/workspace/hello_world
java helloWorld
ou
java -cp ~/workspace/hello_world helloWorld
Sinon, par convention, un nom de classe commence par une majuscule : HelloWorld.
Dernière modification par ®om (Le 16/07/2009, à 15:24)
Hors ligne
#3 Le 16/07/2009, à 15:41
- nanonico
Re : [Résolu] [Java] Execution d'un .class dans un terminal
Merci pour la réponse, ça fonctionne !
Je ne m'attendais pas à devoir être, avec java, systématiquement dans le répertoire courant.
Sinon, encore merci pour la note sur les conventions.
Tu t'exclus toi même du parti en disant cela
Hors ligne
#4 Le 16/07/2009, à 15:56
- ®om
Re : [Résolu] [Java] Execution d'un .class dans un terminal
Merci pour la réponse, ça fonctionne !
Je ne m'attendais pas à devoir être, avec java, systématiquement dans le répertoire courant.
Sinon, encore merci pour la note sur les conventions.
En fait il faut que la "racine" de ton application soit dans le classpath (le répertoire courant '.' y est), et il faut appeler :
java monpackage.MaClass
(si MaClass est dans le package monpackage).
Et au niveau des répertoires, tu aurais donc :
MonProjet
MonProjet/monpackage
MonProjet/monpackage/MaClass.class
(et il faut être dans le répertoire MonProjet)
Dernière modification par ®om (Le 16/07/2009, à 15:56)
Hors ligne