2010-10-27 7 views
1

J'essaie d'exécuter un programme Java à partir de la ligne de commande. J'ai essayé de suivre les étapes mentionnées here. Mais quand j'essaie de lancer javac Hello.java, il y a une erreur de lancer qu'un tel programme n'est pas là. J'ai essayé de donner java Hello.java et obtenu l'erreur:Exécution d'un programme Java à partir de la ligne de commande

Exception in thread "main" java.lang.NoClassDefFoundError: Hello/java 
Caused by: java.lang.ClassNotFoundException: Hello.java 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: Hello.java. Program will exit. 

Quel est le problème ici. Comment puis-je le faire?

EDIT: J'ai plusieurs classes dans mon fichier de code, Hello.java. Cela causera-t-il un problème?

+0

Utilisez-vous des paquets? voyez-vous Hello.class? – codaddict

Répondre

5

Pour exécuter le programme que vous devez faire:

java Hello 

qui est java suivi du nom de la classe sans extension.

+0

Toujours je reçois le "ClassNotFoundException" que j'ai collé au-dessus. Mon code fonctionne correctement en éclipse. – devnull

+0

Ou, en fonction de votre environnement, "java -classpath.Hello" –

+0

Pouvez-vous éditer votre question pour préciser que lors de l'exécution du programme avec «java Hello», il ne fonctionne toujours pas? Et pouvez-vous mettre la stacktrace que vous obtenez lors de l'exécution de 'java Hello'? – Guillaume

6

D'abord, vous devez compiler le code java avec

javac Hello.java 

Ensuite, exécutez

java Hello 

Dans les deux cas, assurez-vous que votre classpath est correctement réglée ...

+0

Où puis-je trouver javac. Javac /../ bin – devnull

+0

javac est dans le JDK –

+0

http://www.oracle.com/technetwork/java/javase/downloads/index.html - le JRE doit être capable de "fonctionner" , le JDK pour pouvoir compiler. – Matthieu

1

Comme l'a déclaré les autres répondent, d'abord, vous devez exécuter votre application en utilisant java Hello et non java Hello.java

Ensuite, vous devez vérifier que votre CLASSPATH est correctement défini. Il semble que votre variable est pas définie ou ne pas intégrer le répertoire en cours, à savoir .

courir donc:

javac -classpath . Hello.java 
java -classpath Hello 

ou

set CLASSPATH=. 
javac Hello.java 
java Hello 

Bien sûr, la définition de la CLASSPATH en tant qu'utilisateur/variable système dans votre système Windows est une meilleure solution!

1

Dans le cas Hello.java est contenu dans un package, vous devrez créer une structure de répertoire appropriée. C'est à dire. dans le cas Hello.java est contenu dans le paquet com.stackoverflow, vous devez créer les dossiers com/stackoverflow et mettre Hello.java dans ce dossier. Dans le dossier racine, vous devez alors lancer

java com.stackoverflow.Hello

3

Tout d'abord, java nécessite au plus une classe publique par fichier. Pas

public class this { 
} 

public class that { 
} 

Vous pouvez avoir

class this { 
    class that { 
    } 
} 

si vous avez besoin.

EDIT ou dans un fichier ceci.java:

public class this { 
} 

class that { 
} 

javac ne sera pas dans le dossier jre. Avez-vous installé le jdk? il ne vient pas par défaut sur beaucoup d'ordinateurs. il est souvent dans "C: \ Program Files \ Java \ jdk1.6.0_05 \ bin \ javac.exe" ou un chemin similaire.

+0

Après l'installation de jdk, je suis capable de lancer javac Hello.java et ensuite java Hello. Il fonctionne correctement même si j'ai plusieurs classes (non imbriquées). – devnull

+0

C'est correct - le post d'édition. une seule classe publique, qui doit avoir le même nom que le fichier. –

+0

De plus, le fichier javac d'eclipse se trouve à un emplacement différent et dans IBM RAD (basé sur eclipse), il ne figure pas dans la variable d'environnement PATH. Je ne sais pas exactement où cela serait. Désolé pour la confusion. –

Questions connexes