Сбой FindClass с prunsrv & springboot?
Я пытался следовать приведенным здесь инструкциям для запуска моего веб-сервиса Spring Boot в качестве службы Windows. Если я укажу начало org.springframework.boot.loader.JarLauncher, то мой веб-сервис запускается и работает, но когда я пытаюсь указать на добавленный класс Bootstrap, я получаю сообщение "FindClass com/mycompany/Bootstrap fail". Таким образом, prunsrv может найти классы SpringBoot, но не мои классы.
Какие-либо предложения? Использование org.springframework.boot.loader.JarLauncher, кажется, работает нормально для запуска службы Windows, но тогда я не могу остановить службу нормально, я должен убить ее в диспетчере задач.
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\GMC_TLG_DEV\Parameters\Java]
"Jvm"="E:\\Java\\jre1.8.0_121_32\\bin\\client\\jvm.dll"
"Classpath"="E:\\Apache\\prunsvc\\myspringbootjar.jar"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\GMC_TLG_DEV\Parameters\Start]
"Class"="org.springframework.boot.loader.JarLauncher"
"Mode"="jvm"
"Method"="main"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\GMC_TLG_DEV\Parameters\Start]
"Class"="com.mycompany.Bootstrap"
"Mode"="jvm"
"Method"="start"
2 ответа
Я был в состоянии понять это, поэтому я публикую решение.
Проблема в том, что Spring Boot больше не хранит классы приложений по обычному пути классов. Spring boot имеет собственный загрузчик классов, который загружает классы приложений. Чтобы поместить мой класс com.mycompany.Bootstrap в правильное местоположение, я добавил скрипт ANT, показанный ниже, в сборку Maven. Этот скрипт пришел из поста где-то, но я не помню, где.
Похоже, решение Раду также подходит.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<zip destfile="${project.build.directory}/${project.build.finalName}.jar"
update="true" compress="store">
<fileset dir="${project.build.directory}/classes" >
<include name="com/mycompany/Bootstrap.class"/>
</fileset>
</zip>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Я знаю, что прошло много времени с вашего поста, но я столкнулся с той же проблемой сегодня. Это может быть связано с измененной упаковкой файлов JAR в Spring Boot с версии 1.4.0.
Инструкции здесь работали в моем случае: https://github.com/spring-projects/spring-boot/issues/6792