J'ai une classe java compilée:
Classe d'écho
public class Echo {
public static void main (String arg) {
System.out.println(arg);
}
}
I cd
dans le répertoire et entrez:java Echo "hello"
J'obtiens cette erreur:
C:\Documents and Settings\joe\My Documents\projects\Misc\bin>java Echo "hello"
Exception in thread "main" java.lang.NoClassDefFoundError: Echo
Caused by: java.lang.ClassNotFoundException: Echo
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)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Echo. Program will exit.
Quel est le moyen le plus simple d'obtenir mon code java sous une forme que je peux exécuter à partir de la ligne de commande car il faut utiliser Eclipse IDE?
Réponses:
Essayer:
En supposant que vous avez compilé avec:
Ensuite, il y a une chance que le répertoire "courant" ne soit pas dans votre chemin de classe (où java recherche les définitions .class)
Si tel est le cas, la liste du contenu de votre répertoire s'affiche:
Ensuite, tout cela peut fonctionner:
ou
Et plus tard, comme le souligne Fredrik , vous recevrez un autre message d'erreur comme.
Lorsque cela se produit, allez lire sa réponse :)
la source
Vous devez spécifier le chemin de classe. Cela devrait le faire:
Cela indique à java d'utiliser
.
(le répertoire courant) comme chemin de classe, c'est-à-dire l'endroit où il cherche les classes. Notez que lorsque vous utilisez des packages, le chemin de classe doit contenir le répertoire racine, pas les sous-répertoires du package. par exemple, si votre classe estmy.package.Echo
et le fichier .class estbin/my/package/Echo.class
, le répertoire de chemin de classe correct estbin
.la source
Vous n'avez pas de méthode principale valide ... La signature doit être: public static void main ( String [] args);
Par conséquent, dans votre cas, le code devrait ressembler à ceci:
Edit: Veuillez noter qu'Oscar a également raison en ce que vous manquez. dans votre chemin de classe, vous rencontreriez le problème que je résous après avoir traité cette erreur.
la source
Avec Java 11, vous n'aurez plus à passer par cette rigmarole!
Au lieu de cela, vous pouvez faire ceci:
Vous n'êtes pas obligé de compiler au préalable, car tout est fait en une seule étape.
Vous pouvez obtenir le JDK Java 11 ici: JDK 11 GA Release
la source
Si vous avez dans votre source java
et votre classe est hello.java avec
et dans ce hello.java vous avez
Puis (après compilation) changezDir (cd) dans le répertoire où se trouve votre hello.class. ensuite
Faites attention au répertoire actuel et au nom du package avant le nom de la classe. Cela fonctionne pour mon sur Linux mint et j'espère que sur les autres os également
Merci Stack overflow pour une mine d'informations.
la source
./mypackage/hello.class
nom. Voir aussi: question " Exécution de java dans un package à partir de la ligne de commande ".Ma situation était un peu compliquée. J'ai dû faire trois étapes puisque j'utilisais un .dll dans le répertoire des ressources, pour le code JNI. Mes fichiers étaient
Mon code contenait la ligne suivante
Tout d'abord, j'ai dû passer au répertoire classpath
Ensuite, j'ai dû changer le chemin de classe pour qu'il pointe vers le répertoire courant afin que ma classe soit chargée et j'ai dû changer le chemin de classe pour qu'il pointe vers le répertoire des ressources afin que ma dll soit chargée.
Ensuite, j'ai dû exécuter java en utilisant le nom de la classe.
la source
Tout d'abord, avez-vous compilé la classe à l'aide du compilateur javac en ligne de commande? Deuxièmement, il semble que votre méthode principale ait une signature incorrecte - elle devrait prendre un tableau d'objets String, plutôt qu'un seul:
Une fois que vous avez modifié votre code pour intégrer un tableau d'objets String, vous devez vous assurer que vous imprimez un élément du tableau, plutôt que le tableau lui-même:
Si vous souhaitez imprimer la liste complète des arguments de ligne de commande, vous devez utiliser une boucle, par exemple
la source