Gradle JavaExec任务在Windows无法启动嵌入式Jetty服务器
Maven迁移Gradle后Windows下嵌入式Jetty启动异常
环境详情
- 使用Gradle 8.3
- Java Web应用采用嵌入式Jetty服务器(已打包进产出jar)
- 开发阶段通过Gradle的
JavaExec任务startWebapp运行com.example.Application启动Jetty - IntelliJ运行配置与上述任务功能一致(由IntelliJ委托Gradle动态生成
JavaExec任务)
问题现象
- 通过IntelliJ启动时,Jetty可正常识别类路径资源,Vaadin v23等功能正常
- 通过
startWebapp任务在Windows启动时完全无法运行(Linux/OSX下正常) - 日志显示Jetty仅加载本地资源,未识别jar包内的
META-INF/resources,还会出现StaticFileHandler为空或Vaadin前端编译失败(ENOTCONN错误)的异常
配置信息
- IntelliJ运行配置见截图
startWebapp任务配置代码:
create<JavaExec>("startWebapp") { val workingDirPath = projectDir val javaTmp = buildDir.resolve("tmp/startWebapp").resolve(System.currentTimeMillis().toString()) systemProperties = mapOf( // 解决Windows下权限问题 "java.io.tmpdir" to javaTmp ) classpath = mainSourceSet.runtimeClasspath mainClass.set(mainClassString) args = listOf("--profile=local-defaults", "-ea") workingDir = workingDirPath doFirst { println("Set -Djava.io.tmpdir=$javaTmp and create directory.") javaTmp.mkdirs() } dependsOn("processResources") dependsOn("vaadinPrepareFrontend") }
已尝试方案
- 手动配置类路径(类似Gradle的pathing jar方式)
- 使用包含IntelliJ成功类路径的argFile
两种方式均失败,Jetty仍无法识别资源。怀疑IntelliJ有隐藏配置,或Jetty需调整适配pathing jars的参数。
内容的提问来源于stack exchange,提问作者tftd
相关产品推荐
相关产品推荐

