Jak uruchomić Javę.akta klasowe?
Skompilowałem program HelloWorld i używam wiersza polecenia, aby go uruchomić. The .plik klasy nazywa się HelloWorld2.klasa
Plik znajduje się w C:\Users\Matt\workspace\HelloWorld2\bin Oto co dostaję po przejściu do wiersza polecenia i wpisaniu "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.
Spodziewałem się wydrukowania HelloWorld. Co robię źle? Mam zainstalowane JDK.
5 answers
Musisz ustawić classpath, aby znaleźć skompilowaną klasę:
java -cp C:\Users\Matt\workspace\HelloWorld2\bin HelloWorld2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 15:51:00
Aby uruchomić plik klasy Java z linii 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 główną nazwą twojej klasy jest App, a Nazwa pakietu Java Twojej aplikacji to com.foo.app
, to plik klasy musi znajdować się w folderze com/foo/app
(osobny folder dla każdej kropki), więc uruchom aplikację jako:
$ java com.foo.app.App
Uwaga: $
wskazuje znak zachęty powłoki, ignoruj go podczas wpisywania
Jeśli twoja klasa nie ma zdefiniowanej nazwy package
, po prostu uruchom jako: java App
.
Jeśli masz jakieś inne zależności jar, upewnij się, że podałeś swój classpath parametr albo z -cp
/-classpath
lub za pomocą zmiennej CLASSPATH
, która wskazuje na folder z jar/wojna/ucho/zip/pliki klasy . Więc na Linuksie możesz przedrostek polecenia: CLASSPATH=/path/to/jars
, na 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
Ponieważ stworzyliśmy przykładowy projekt używając Maven jako:
$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
I skompilowaliśmy nasz projekt przez mvn compile
w naszym katalogu my-app/
, wygeneruje on plik naszej klasy w target/classes/com/foo/app/App.class
.
Aby go uruchomić, możemy albo określić ścieżkę klasy poprzez -cp
lub przejść do niej bezpośrednio, sprawdź przykłady poniżej:
$ 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!
To double check nazwa twojej klasy i pakietu, możesz użyć narzędzia Java class file disassembler, 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 będzie działać, jeśli skompilowany plik został zaciemniony.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-10 22:50:56
Może to oznaczać wiele rzeczy, ale najczęściej jest to, że Klasa zawarta w pliku nie ma tej samej nazwy co sam plik. Sprawdź więc, czy Twoja klasa również nazywa się HelloWorld2.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 16:07:23
- Przejdź do ścieżki, na której zapisałeś plik java, który chcesz skompilować.
- Zastąp ścieżkę wpisując cmd i naciśnij enter.
- Pojawi Się Katalog wiersza polecenia zawierający plik ścieżki jak
C:/blah/blah/foldercontainJava
- Enter
javac javafile.java
- Naciśnij Enter. Automatycznie wygeneruje plik klasy java
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-19 16:21:03
Musisz umieścić Javę małymi literami i musisz dodać .Klasa!
java HelloWorld2.class
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-10 15:34:17