Запустите SpringBoot war из командной строки (раскладка войны) - PullRequest
0 голосов
/ 01 июня 2018

У меня есть простой проект Spring-Boot-Start-Web.

Я переупаковываю свою банку, используя повторную упаковку "WAR"

                <execution>
                    <id>repackage</id>
                    <configuration>
                        <layout>WAR</layout>
                        <mainClass>com.test.SimpleServiceApplication</mainClass>
                    </configuration>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <phase>verify</phase>
                </execution>

https://docs.spring.io/spring-boot/docs/current/maven-plugin/usage.html

WAR определяется как: исполняемый WAR макет.при условии, что зависимости помещены в WEB-INF / lib-обеспечено, чтобы избежать любого столкновения, когда война развернута в контейнере сервлета.

У меня сложилось впечатление, что библиотеки в WEB-INF \ lib-обеспеченный \ был бы сделан видимым загрузчиком, если бы я хотел выполнить приложение, используя основной класс (исполняемый файл).Но он невидим для контейнера сервлета, если его развернуть как войну в надлежащей среде весенней загрузки.

По сути, я думал, что WAR - это и deploy -able, и исполняемый .

Кажется, это не тот случай

Если я использую командную строку и пытаюсь ее запустить:

java -jar demo-simple-service-api.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:58)
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
        at com.test.SimpleServiceApplication.main(SimpleServiceApplication.java:10)
        ... 8 more
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 9 more

Я вижу библиотеку вwar.

Есть ли способ запустить (не развернуть) войну?

Если «загрузчик \ загрузчик» не делает видимым при запуске приложения, зачем включать эти библиотеки?

Я работал над этим, создав 2 архива, используя оба варианта упаковки JAR и WAR, но я удивлен первоначальным результатом.

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