Spring 引导 1.4 到 1.5,无法部署

Spring Boot 1.4 to 1.5, unable to deploy

我有一个非常大的工作 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 文件的屏幕截图 http://imgur.com/a/5aORQ

在 Tomcat 中进行了更改,现在它使用 * 作为 war:file: URL 中的分隔符。这破坏了 Spring 框架的资源解析,其中 * 被错误地解释为通配符。

问题应该是 fixed in Spring Framework 4.3.8,它在 Spring Boot 1.5.3 中使用,但您似乎发现了一个未考虑的案例。你能否打开一个 Spring 引导问题,并提供一个重现该问题的小示例?

当您将应用程序打包为 jar 文件时,您看不到问题,因为这会阻止 Tomcat 为资源生成 war:file: URL。