У меня есть простой проект 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, но я удивлен первоначальным результатом.