Spring Boot 1.4 до 1.5, невозможно развернуть

У меня есть очень большой и работающий проект Spring Boot, который работает нормально с Boot 1.4.2. Когда я пытаюсь обновиться до 1.5.3, он работает из моей IDE (Intellij Idea), но не работает при развертывании. Это проект Maven, поэтому я использую директиву package для генерации файла WAR и получаю сообщение об ошибке ниже при развертывании. Из того, что я вижу, написано, что что-то отсутствует в WAR, но я даже проверил это, и файлы есть... Есть идеи?

Caused by: java.io.FileNotFoundException: file:(...)/target/ultraip-intranet-2.0-RELEASE.war*/WEB-INF/classes/com/ultraip/intranet/entities (No such file or directory)
    at java.util.zip.ZipFile.open(Native Method) ~[na:1.8.0_131]
    at java.util.zip.ZipFile.<init>(ZipFile.java:219) ~[na:1.8.0_131]
    at java.util.zip.ZipFile.<init>(ZipFile.java:149) ~[na:1.8.0_131]
    at java.util.jar.JarFile.<init>(JarFile.java:166) ~[na:1.8.0_131]
    at java.util.jar.JarFile.<init>(JarFile.java:103) ~[na:1.8.0_131]
    at org.springframework.core.io.support.PathMatchingResourcePatternResolver.doFindPathMatchingJarResources(PathMatchingResourcePatternResolver.java:593) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
    at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:475) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
    at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:279) ~[spring-core-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
    at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.buildDefaultPersistenceUnitInfo(DefaultPersistenceUnitManager.java:525) ~[spring-orm-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]
    ... 105 common frames omitted

Снимок экрана сгенерированного файла WAR https://imgur.com/a/5aORQ

1 ответ

Решение

В Tomcat были внесены изменения, так что теперь он использует * в качестве разделителя в war:file: URL-адрес. Это сломало разрешение ресурсов Spring Framework, где * был неправильно интерпретирован как подстановочный знак.

Проблема должна была быть исправлена ​​в Spring Framework 4.3.8, который используется в Spring Boot 1.5.3, но, похоже, вы нашли случай, который не рассматривался. Можете ли вы открыть проблему Spring Boot с небольшим образцом, который воспроизводит проблему?

Вы не видите проблемы, когда упаковываете свое приложение в файл jar, так как это мешает Tomcat производить war:file: URL для ресурсов.

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