You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:55:26