Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink :
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 ! lol

Je ne m'attendais pas à devoir être, avec java, systématiquement dans le répertoire courant. big_smile

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

nanonico a écrit :

Merci pour la réponse, ça fonctionne ! lol

Je ne m'attendais pas à devoir être, avec java, systématiquement dans le répertoire courant. big_smile

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