Comment exécuter Java.les fichiers de classe?


J'ai compilé un programme HelloWorld et j'utilise l'invite de commande pour l'exécuter. Le .le fichier de classe est nommé HelloWorld2.classe

Le fichier se trouve dans C:\Users\Matt\workspace\HelloWorld2\bin Voici ce que je reçois quand je vais à l'invite de commande, et tapez "Java HelloWorld2":

C:\Users\Matt>Java HelloWorld2
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld2
Caused by: java.lang.ClassNotFoundException: HelloWorld2
        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: HelloWorld2.  Program will exit.

Je m'attendais à voir un HelloWorld imprimé. Ce que je fais mal? J'ai le JDK installé.

Author: Jonathon Faust, 2011-04-22

5 answers

Vous devez définir le chemin de classe pour trouver votre classe compilée:

java -cp C:\Users\Matt\workspace\HelloWorld2\bin HelloWorld2

 97
Author: Isaac Truett, 2011-04-22 15:51:00

Pour exécuter Fichier de classe Java{[24] } à partir de la ligne de commande, la syntaxe est:

java -classpath /path/to/jars <packageName>.<MainClassName>

Où packageName (commence généralement par com ou org) est le nom du dossier où votre fichier de classe est présent.

Par exemple, si votre nom de classe principal est App et que le nom du package Java {[24] } de votre application est com.foo.app, alors votre fichier de classe doit être dans le dossier com/foo/app (dossier séparé pour chaque point), vous exécutez donc votre application comme:

$ java com.foo.app.App

Remarque: $ indique à l'invite du shell, ignorez-le lorsque vous tapez

Si votre classe n'a pas de nom package défini, exécutez simplement comme: java App.

Si vous avez toute autre pot dépendances, assurez-vous que vous avez spécifié votre classpath paramètre soit avec -cp/-classpath ou à l'aide de CLASSPATH variable qui pointe vers le dossier avec votre jar/la guerre/l'oreille/zip/de catégorie fichiers. Donc, sous Linux, vous pouvez préfixer la commande avec: CLASSPATH=/path/to/jars, sous Windows, vous devez ajouter le dossier dans la variable système. S'il n'est pas défini, le chemin de la classe utilisateur se compose du répertoire courant (.).


Exemple Pratique

Étant donné que nous avons créé un exemple de projet en utilisant Maven comme:

$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 

Et nous avons compilé notre projet par mvn compile dans notre répertoire my-app/, cela générera notre fichier de classe dans target/classes/com/foo/app/App.class.

Pour l'exécuter, nous pouvons soit spécifier le chemin de classe via -cp ou y aller directement, vérifiez les exemples ci-dessous:

$ find . -name "*.class"
./target/classes/com/foo/app/App.class
$ CLASSPATH=target/classes/ java com.foo.app.App
Hello World!
$ java -cp target/classes com.foo.app.App
Hello World!
$ java -classpath .:/path/to/other-jars:target/classes com.foo.app.App
Hello World!
$ cd target/classes && java com.foo.app.App
Hello World!

Pour vérifier votre nom de classe et de package, vous pouvez utiliser l'outil Java class file disassembler, par exemple:

$ javap target/classes/com/foo/app/App.class
Compiled from "App.java"
public class com.foo.app.App {
  public com.foo.app.App();
  public static void main(java.lang.String[]);
}

Remarque: javap ne fonctionne pas si le fichier compilé a été obscurci.

 43
Author: kenorb, 2015-12-10 22:50:56

Cela peut signifier beaucoup de choses, mais le plus commun est que la classe contenue dans le fichier n'a pas le même nom que le fichier lui-même. Vérifiez donc si votre classe s'appelle également HelloWorld2.

 2
Author: Federico Vera, 2011-04-22 16:07:23
  1. Accédez au chemin où vous avez enregistré le fichier java que vous souhaitez compiler.
  2. Remplacez path en tapant cmd et appuyez sur Entrée.
  3. Le répertoire d'invite de commande apparaîtra contenant le fichier de chemin comme C:/blah/blah/foldercontainJava
  4. Entrez javac javafile.java
  5. Appuyez sur Entrée. Il générera automatiquement un fichier de classe java
 -1
Author: odunstory, 2019-11-19 16:21:03

, Vous devez mettre java en minuscules, vous devez ajouter .la classe!

java HelloWorld2.class
 -3
Author: Corni, 2020-02-10 15:34:17