So führen Sie die Java-Klassendatei über die Befehlszeile aus:
java -classpath /path/to/jars <packageName>.<MainClassName>
Dabei ist packageName (normalerweise mit entweder com
oder org
) der Ordnername, in dem Ihre Klassendatei vorhanden ist.
Wenn Ihr Hauptklassenname beispielsweise App und der Java-Paketname Ihrer App lautet com.foo.app
, muss sich Ihre Klassendatei im com/foo/app
Ordner befinden (separater Ordner für jeden Punkt), damit Sie Ihre App wie folgt ausführen können:
$ java com.foo.app.App
Hinweis: $
Zeigt eine Shell-Eingabeaufforderung an. Ignorieren Sie diese bei der Eingabe
Wenn für Ihre Klasse kein package
Name definiert ist, führen Sie einfach Folgendes aus : java App
.
Wenn Sie andere JAR-Abhängigkeiten haben, stellen Sie sicher, dass Sie Ihren Klassenpfadparameter entweder mit -cp
/ -classpath
oder mit einer CLASSPATH
Variablen angegeben haben, die auf den Ordner mit Ihren JAR- / War- / Ear- / Zip- / Klassendateien verweist . Unter Linux können Sie dem Befehl also Folgendes voranstellen: Unter CLASSPATH=/path/to/jars
Windows müssen Sie den Ordner zur Systemvariablen hinzufügen. Wenn nicht festgelegt, besteht der Benutzerklassenpfad aus dem aktuellen Verzeichnis ( .
).
Praktisches Beispiel
Vorausgesetzt, wir haben ein Beispielprojekt mit Maven erstellt als:
$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
und wir haben unser Projekt mvn compile
in unserem my-app/
Verzeichnis kompiliert , es wird unsere Klassendatei in generieren target/classes/com/foo/app/App.class
.
Um es auszuführen, können wir entweder den Klassenpfad über angeben -cp
oder direkt dorthin gehen. Überprüfen Sie die folgenden Beispiele:
$ 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!
Um Ihren Klassen- und Paketnamen zu überprüfen, können Sie das Java-Klassendateidisassembler-Tool verwenden, z.
$ 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[]);
}
Hinweis: Funktioniert javap
nicht, wenn die kompilierte Datei verschleiert wurde.