Сбой 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

Другие вопросы по тегам