Comment exécuter une application java .classe à partir de la ligne de commande
J'ai compilé classe java:
Echo.class
public class Echo {
public static void main (String arg) {
System.out.println(arg);
}
}
Je cd
pour 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.
Quelle est la façon la plus simple pour obtenir mon code java dans une forme que je peux courir à partir de la ligne de commande comme revêtue d'avoir à utiliser Eclipse IDE?
- Suggestion: à La question d'origine, peut-être, mieux être de gauche inédits, afin de ne pas invalider les réponses, en vertu d'un examen rapide. Vraiment bizarre de voir la signature de la méthode et puis un tas de réponses qui disent que c'était incorrect. Code erroné est censé être de gauche que, pour les fins de comparaison avec la version correcte, au moins.
Vous devez vous connecter pour publier un commentaire.
Essayer:
En supposant que vous avez compilé avec:
Puis il ya une chance que le "courant" répertoire n'est pas dans votre classpath ( où java recherche .définitions de classe )
Si c'est le cas et listant le contenu de votre dir affiche:
Puis tout cela peut fonctionner:
ou
Et, plus tard, comme Fredrik points que vous obtenez un autre message d'erreur comme.
Quand cela arrive, aller lire sa réponse 🙂
Vous devez spécifier le chemin de la classe. Cela devrait le faire:
Cela dit java à utiliser
.
(le répertoire courant) que son chemin de classe, c'est à dire l'endroit où il a l'air de classes. Notez que lorsque vous utilisez les paquets, le classpath doit contenir le répertoire de racine, pas le package sous-répertoires. par exemple, si votre classe estmy.package.Echo
et la .fichier de classe estbin/my/package/Echo.class
, le bon répertoire de chemin de classe estbin
.Vous n'avez pas valide méthode main... La signature doit être:
public static void main(String[] args);
Donc, dans votre cas, le code devrait ressembler à ceci:
Edit: Veuillez noter que Oscar est aussi droit que vous êtes absent . dans votre classpath, vous rencontrerez le problème que j'ai à résoudre après avoir traité de cette erreur.
Avec Java 11, vous n'aurez pas à passer par ce galimatias plus!
Au lieu de cela, vous pouvez faire ceci:
Vous n'avez pas à compiler à l'avance, que tout est fait en une seule étape.
Vous pouvez obtenir le Java 11 JDK ici: JDK 11 Version GA
Il peut y avoir plusieurs choses de mal, voici un tutoriel qui devrait vous obtenir a commencé: L'exécution de Java comme une Application en Ligne de Commande.
Ma situation était un peu compliquée. J'ai eu à faire en trois étapes depuis que j'ai été en utilisant un .dll dans le répertoire de ressources, pour JNI code. Mes fichiers ont été
Mon code la ligne suivante
D'abord, j'ai dû déplacer le répertoire de chemin de classe
Ensuite, j'ai dû modifier le classpath pour pointer vers le répertoire en cours afin que les élèves de ma classe serait chargé et j'ai dû modifier le classpath à point à celui répertoire de ressources donc ma dll serait chargé.
Ensuite, j'ai eu à exécuter java à l'aide de la classe.
Si vous avez dans votre source java
et votre classe hello.java
avec
et en ce que hello.java vous avez
Alors
(après compilation)
changeDir (cd) dans le répertoire où votre hello.class est.
Puis
L'esprit le répertoire courant et le nom du package avant le nom de la classe.
Il fonctionne pour mon sur linux mint et j'espère que sur les autres os aussi
Grâce débordement de Pile pour une mine d'info.
./mypackage/hello.class
nom. Voir aussi: "en cours d'Exécution de java dans un package à partir de la ligne de commande" question.Tout d'abord, vous avez compilé la classe à l'aide de la ligne de commande du compilateur javac? Deuxièmement, il semble que votre méthode principale a une signature incorrecte - elle doit être prise dans un tableau de String, objets, plutôt que juste un:
Une fois que vous avez changé votre code dans un tableau de String, objets, alors vous devez vous assurer que vous avez l'impression d'un élément du tableau, plutôt que le tableau lui-même:
Si vous souhaitez imprimer la liste de tous les arguments de ligne de commande, vous devez utiliser une boucle, par exemple