Aby uruchomić plik klasy Java z wiersza poleceń, składnia jest następująca:
java -classpath /path/to/jars <packageName>.<MainClassName>
gdzie nazwa_pakietu (zwykle zaczyna się od com
lub org
) jest nazwą folderu, w którym znajduje się plik klasy.
Na przykład, jeśli nazwa Twojej klasy głównej to Aplikacja, a nazwa pakietu Java Twojej aplikacji to com.foo.app
, plik klasy musi znajdować się w com/foo/app
folderze (osobny folder dla każdej kropki), więc uruchamiasz aplikację jako:
$ java com.foo.app.App
Uwaga: $
wskazuje na monit powłoki, zignoruj go podczas pisania
Jeśli klasa nie ma żadnej package
nazwy zdefiniowane, po prostu uruchom jako: java App
.
Jeśli masz jakieś inne zależności jar, upewnij się, że podałeś parametr classpath za pomocą -cp
/ -classpath
lub używając CLASSPATH
zmiennej, która wskazuje na folder z plikami jar / war / ear / zip / class . W systemie Linux możesz poprzedzić polecenie:, CLASSPATH=/path/to/jars
w systemie Windows musisz dodać folder do zmiennej systemowej. Jeśli nie jest ustawiona, ścieżka klasy użytkownika składa się z bieżącego katalogu ( .
).
Praktyczny przykład
Biorąc pod uwagę, że stworzyliśmy przykładowy projekt przy użyciu Mavena jako:
$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
i skompilowaliśmy nasz projekt mvn compile
w naszym my-app/
katalogu, wygeneruje on nasz plik klasy target/classes/com/foo/app/App.class
.
Aby go uruchomić, możemy określić ścieżkę do klasy za pośrednictwem -cp
lub bezpośrednio do niej, sprawdź poniższe przykłady:
$ 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!
Aby dokładnie sprawdzić swoją klasę i nazwę pakietu, możesz użyć narzędzia do dezasemblacji plików klas Java, np .:
$ 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[]);
}
Uwaga: javap
nie zadziała, jeśli skompilowany plik został zaciemniony.