Несколько месяцев go Я создал небольшой плагин Gradle, который запускал приложение Java на заднем плане. Хотя в прошлом это работало нормально, это уже не так, и я озадачен, почему это не так.
Кажется, что программа запуска работает нормально под Windows, но не работает с тем же при Linux , Когда он пытается выполнить команду, о которой идет речь, это:
/home/aris.kourtesas/.sdkman/candidates/java/8.0.242.hs-adpt/jre/bin/java -cp "/home/aris.kourtesas/Projects/marketing-server/classes:/home/aris.kourtesas/Projects/marketing-server/classes/*" -XX:+UseParallelGC -Dads.net.port=17770 -Dads.db.user=marketing_int -Dads.db.pwd=marketing_int -Dads.marketing fts.marketing.server.WebServer
Сбой из-за следующей ошибки:
Error: Could not find or load main class fts.marketing.server.WebServer
Однако при копировании вставьте Команда и запустить его на оболочке напрямую, он работает просто отлично. Я очень смущен и, честно говоря, я не знаю, что мне делать Все файлы присутствуют, и путь к классам правильный, но он говорит, что основной класс, который я пытаюсь вызвать, не найден.
Для ссылки это код, который создает команду запуска:
if (isWindows()) {
builder.append("CMD /C START /B ")
}
builder.append(java() + " -cp " + classpath() +
" -XX:+UseParallelGC " +
"-Dads.net.port=${MARKETING_IT_APPSERVER_PORT} " +
"-Dads.db.user=${MARKETING_IT_DB_USERNAME} " +
"-Dads.db.pwd=${MARKETING_IT_DB_PASSWORD} " +
"-Dads.marketing " +
(MARKETING_IT_DB_HOST ? "-Dads.db.host=${MARKETING_IT_DB_HOST} " : '') +
(MARKETING_IT_USER_HOME ? "-Duser.home=${MARKETING_IT_USER_HOME} " : '') +
"fts.marketing.server.WebServer")
if (!isWindows()) {
builder.append(" &")
}
И это та часть кода, которая создает и запускает рассматриваемый процесс:
private def static createProcess(String directory, String command) {
new ProcessBuilder(command.split(' '))
.redirectErrorStream(true)
.directory(Paths.get(directory).toFile())
.start()
}
Не могли бы вы пролить свет на это?