исключение при запуске весеннего загрузочного приложения из другой программы java - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть jar-приложение с пружинной загрузкой, и чтобы сделать его обратно совместимым с существующим фреймворком, мне нужно запустить его из java программы. Основной класс:

package com.api;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }

}

Вот мой pom. xml, который создает Uber-jar 'Manufacturer-JAR-with-dependencies-1.0.0.jar'

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <mainClass>com.api.Application</mainClass>
                </configuration>
                  <executions>
                    <execution>
                      <goals>
                        <goal>repackage</goal>
                      </goals>
                    </execution>
                </executions>
            </plugin>
    </build>

MANIFEST .MF

Archiver-Version: Plexus Archiver
Start-Class: com.api.Application
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.2.1.RELEASE
Created-By: Apache Maven 3.2.1
Build-Jdk: 1.8.0_131
Main-Class: org.springframework.boot.loader.JarLauncher

работает нормально, когда я запускаю его локально из затмения. Но чтобы запустить его в более высоких средах, он должен быть запущен из обобщенного c класса 'GenericProcessMain. java', который вызывает основной метод, например:

Method mainMethod = mainClass.getMethod("main", String[].class);
mainMethod.invoke(null, new Object[] { mainArgs });

'mainClassName' Я Передача 'org.springframework.boot.loader.JarLauncher'. Я получаю сообщение об ошибке ниже:

Caused by: java.lang.IllegalStateException: Unable to determine code source archive from 
        at org.springframework.boot.loader.Launcher.createArchive(Launcher.java:125)
        at org.springframework.boot.loader.ExecutableArchiveLauncher.<init>  (ExecutableArchiveLauncher.java:39)

Должен ли я попытаться создать класс оболочки java, который выполняет команду 'java -jar provider-jar-with-dependencies-1.0.0.jar' и затем вызовите этот класс оболочки java из GenericProcessMain. java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...