Я скомпилировал файл JAR и указал главный класс в манифесте (я использовал функцию Eclipse Export ). Все мои зависимости находятся в каталоге с меткой lib
. Кажется, я не могу получить прямого ответа о том, как выполнить мой файл JAR, указав, что он должен использовать в lib/*
качестве пути к классам.
Я пробовал:
]$ java -jar -cp .:lib/* MyJar.jar
]$ java -cp .:lib/* -jar MyJar.jar
]$ java -cp .:lib/* com.somepackage.subpackage.Main
и т.д...
Каждый выдает ошибку:
Error: Could not find or load main class ....
или NoClassDefFoundError
указывает, что библиотеки не найдены.
Я даже попытался переделать файл JAR и включил lib
каталог и его содержимое, но все еще без кубиков ...
Как я могу выполнить файл JAR из командной строки и указать путь к классам, который нужно использовать?
java
shell
command-line
classpath
SnakeDoc
источник
источник
Ответы:
При указании
-jar
то-cp
параметр будет проигнорирован.Из документации :
Вы также не можете «включить» необходимые файлы jar в другой файл jar (вам нужно будет извлечь их содержимое и поместить файлы .class в свой файл jar)
У вас есть два варианта:
lib
каталога в манифест (вы можете использовать там относительные пути)-cp
:java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main
источник
unzip MyJar.jar lib/*.jar
. Тогда, как вы предлагаете, они могут бежатьjava -cp MyJar.jar:lib/* ...
Запустите файл jar и укажите путь к классу следующим образом:
jar_name.jar
это полное имя JAR, который вы хотите выполнитьlibs/*
путь к вашим JAR-файлам зависимостейcom.test.App
- это полное имя класса из JAR, в котором естьmain(String[])
методJar и зависимый jar должны иметь разрешения на выполнение.
источник
Вы можете сделать это в оболочке unix:
Вы можете сделать это в Windows PowerShell:
источник
В качестве альтернативы используйте манифест, чтобы указать путь к классам и основной класс, если хотите, чтобы вам не нужно было использовать
-cp
или указывать основной класс. В вашем случае он будет содержать такие строки:К сожалению, вам нужно указать каждую банку в манифесте (не так уж важно, как вы делаете только один раз, и вы можете использовать скрипт для создания файла или использовать инструмент сборки, такой как ANT, Maven или Gradle). И ссылка должна быть относительной или абсолютной директорией, в которой вы запускаете
java -jar MyJar.jar
.Затем выполните его с помощью
источник
Вы можете выполнить Runtime.getRuntime.exec (команду), чтобы перезапустить jar, включая путь к классам с args.
источник