Spring Boot+Vaadin启动后UI访问报错:无法打开根Jar文件
Vaadin/Spring Boot Jar启动时Jar文件访问异常问题
问题描述
- IntelliJ内启动应用,Safari/Chrome浏览器访问无异常
- 通过控制台执行命令启动(启动日志显示正常):
/path/to/java -jar /path/to/app --spring.profiles.active=prod - 访问UI地址
localhost:8081/..../myapp时抛出异常:java.io.IOException: Unable to open root Jar file 'war:file:/Users/.../myapp-1.0-SNAPSHOT.jar*/BOOT-INF/lib/flow-server-2.10.5.jar'
- 解压Jar文件后,确认
/BOOT-INF/lib/flow-server-2.10.5.jar存在于正确路径 - 两种启动方式使用相同Java版本(8或17)、相同参数及浏览器
可能的解决方法
- 重新构建完整Jar包:执行Maven/Gradle的clean打包命令,避免打包过程中出现损坏
- Maven:
mvn clean package -DskipTests -Pprod - Gradle:
./gradlew clean bootJar -Pprod
- Maven:
- 添加Vaadin静态资源访问参数:启动命令中加入系统属性,强制使用文件系统模式访问静态资源,规避Jar URL解析问题
/path/to/java -Dvaadin.useFileSystemForStaticAssets=true -jar /path/to/app --spring.profiles.active=prod - 检查版本兼容性:确认flow-server-2.10.5与当前Spring Boot版本的适配性,若版本不匹配,升级或降级Vaadin Flow到对应兼容版本
- 排查路径特殊字符:将Jar文件移动到无空格、中文或特殊字符的路径下再启动,避免URL解析出错
- 禁用Jar索引功能:在
application-prod.properties中添加配置,关闭Spring Boot的Jar索引spring.jar.index.enabled=false
内容的提问来源于stack exchange,提问作者Viktor Gintner
相关产品推荐
相关产品推荐

