Запустите не основной класс приложения весенней загрузки через командную строку - PullRequest
0 голосов
/ 16 мая 2018

У меня есть весеннее загрузочное приложение, упакованное как исполняемый файл jar.Приложение имеет один служебный класс с методом main, который я хочу вызвать через командную строку, но кажется, что команда не может найти класс в classpath.

Команда:

java -cp client-stp-grid-publisher-SNAPSHOT.jar com.client.stp.util.JMXClientUtils

Я попытался установить путь к классу jar в MANIFEST.MF, используя задачу gradle jar, но без помощи:

jar {
    baseName = 'client-stp-grid-publisher'
    manifest {
        attributes(
                'Class-Path': "BOOT-INF/classes/*"
        )
    }
}

Сгенерированный MANIFEST.MF:

Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.JarLauncher
Class-path: BOOT-INF/classes/*
Start-Class: com.client.stp.ClientStpGridPublisherMain
Spring-Boot-Version: 1.5.10.RELEASE
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/

Я понимаю, что идеально исполняемый jar не может быть использован в качестве зависимой библиотеки, но есть ли обходной путь для достижения моего варианта использования?

Другим решением может быть передача флага для запуска основного классаили служебный класс как приложение весенней загрузки, но я не хочу запускать служебный класс как процесс весенней загрузки.

1 Ответ

0 голосов
/ 23 июня 2018

может быть, вы можете проверить с помощью команды

java -cp client-stp-grid-publisher-SNAPSHOT.jar -Dloader.main=com.client.stp.util.JMXClientUtils rg.springframework.boot.loader.PropertiesLauncher

Его можно найти в здесь .

...