Чтобы запустить файл класса Java из командной строки, используйте следующий синтаксис:
java -classpath /path/to/jars <packageName>.<MainClassName>
где packageName (обычно начинается с com
или org
) - это имя папки, в которой находится ваш файл класса.
Например, если ваше основное имя класса - приложение, а имя пакета Java вашего приложения - com.foo.app
то ваш файл класса должен находиться в com/foo/app
папке (отдельная папка для каждой точки), поэтому вы запускаете свое приложение как:
$ java com.foo.app.App
Примечание: $
указывает приглашение оболочки, игнорируйте его при вводе
Если ваш класс не имеет package
имени определенные, просто работать как: java App
.
Если у вас есть какие-либо другие зависимости jar, убедитесь, что вы указали свой параметр classpath с помощью -cp
/ -classpath
или с помощью CLASSPATH
переменной, которая указывает на папку с вашими файлами jar / war / ear / zip / class . Итак, в Linux вы можете префикс команды:, CLASSPATH=/path/to/jars
в Windows вам нужно добавить папку в системную переменную. Если не задан, путь к пользовательскому классу состоит из текущего каталога ( .
).
Практический пример
Учитывая, что мы создали образец проекта, используя Maven как:
$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
и мы скомпилировали наш проект mvn compile
в нашем my-app/
каталоге, он сгенерирует наш файл класса target/classes/com/foo/app/App.class
.
Чтобы запустить его, мы можем либо указать путь к классу, -cp
либо перейти к нему напрямую, посмотрите примеры ниже:
$ 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!
Чтобы дважды проверить свой класс и имя пакета, вы можете использовать инструмент дизассемблера файлов классов Java, например:
$ 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[]);
}
Примечание: javap
не будет работать, если скомпилированный файл был запутан.