У меня есть отдельный проект, основанный на gradle. Когда я делаю gradle build, jar создается в файле build/libs. Как запустить эту исполняемую банку из командной строки? Я попытался: java -cp build/libs/foo.jar full.package.classname
, но я получил noClassFoundException для импортированных классов. Как включить зависимые банки как часть пути к классам?
Запуск исполняемого файла jar, построенного на основе проекта gradle
Ответ 1
Поскольку вопрос отмечен тегом gradle, я предполагаю, что вы хотите запустить jar из gradle build. Я также предполагаю, что вы используете плагин java
для своей сборки gradle.
Добавьте следующие строки в gradle:
task runFinalJar(type: JavaExec) {
classpath = files('build/libs/foo.jar')
classpath += sourceSets.main.runtimeClasspath
main = full.package.classname
}
Теперь вы можете включить свою задачу в процесс сборки:
build.dependsOn.add("runFinalJar")
Или просто запустите его в командной строке:
gradle build runFinalJar
ОБНОВЛЕНИЕ Чистое использование плагина приложения, как предложил Питер
Ответ 2
Либо используйте плагин приложения, чтобы создать архив, содержащий ваш код, его зависимости и сценарии запуска, или создать исполняемый файл Jar. Последнее не должно выполняться наивным образом, но с gradle-one-jar (или аналогичным) плагином.
Ответ 3
Я думаю, что ответы идут дальше того, что есть на самом деле. Вопрос, или может быть пересчитан как, как запустить JAR, который gradle строит.
Пользователь спрашивает, что они пробовали java -cp build/libs/foo.jar full.package.classname
безрезультатно.
Правильный синтаксис java -jar build/libs/foo.jar
, или если JAR находится прямо там, очевидно, что он просто java -jar foo.jar
, как обычно.
Вопрос должен быть отредактирован для ясности, ИМХО.