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

执行Main.main()时Gradle任务失败,但build任务成功求助

解决Gradle运行Main.main()时非零退出值1的问题

问题描述

运行Main.main()时遇到两个问题:

  1. 构建提示使用了与Gradle 9.0不兼容的已弃用特性
  2. :Main.main()任务执行失败,错误提示:Process 'command 'C:\Program Files\Java\jdk-21\bin\java.exe'' finished with non-zero exit value 1

添加--stack-trace后的详细日志:

任务':Main.main()'执行失败。
进程'命令'C:\Program Files\Java\jdk-21\bin\java.exe''以非零退出值1结束 *
尝试:
使用--info或--debug选项获取更多日志输出。
使用--scan获取完整分析信息。
访问Gradle帮助页面获取更多帮助。

  • 异常信息:
    org.gradle.api.tasks.TaskExecutionException: 任务':Main.main()'执行失败。
    Caused by: org.gradle.process.internal.ExecException: 进程'命令'C:\Program Files\Java\jdk-21\bin\java.exe''以非零退出值1结束
    构建使用了已弃用的Gradle特性,与Gradle 9.0不兼容。
    可使用'--warning-mode all'查看单个弃用警告,确定其来自脚本还是插件。
    更多信息请参考Gradle文档中命令行警告相关章节。
    构建失败,耗时1秒 2个可执行任务:1个已执行,1个已是最新状态

但执行./gradlew build时构建完全成功:

$ ./gradlew build
构建成功,耗时4秒
2个可执行任务:2个已执行
<-------------> 0% 等待

空闲

当前build.gradle配置:

plugins {
    id 'java'
}

java {
    sourceCompatibility = JavaVersion.VERSION_21
}

group = 'org.example'
version = '1.0-SNAPSHOT'


repositories {
    mavenCentral()
}

dependencies {
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

test {
    useJUnitPlatform()
}
project.ext.lwjglVersion = "3.3.3"
project.ext.jomlVersion = "1.10.5"
project.ext.lwjglNatives = "natives-windows"



dependencies {
    implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")

    implementation "org.lwjgl:lwjgl"
    implementation "org.lwjgl:lwjgl-assimp"
    implementation "org.lwjgl:lwjgl-glfw"
    implementation "org.lwjgl:lwjgl-nfd"
    implementation "org.lwjgl:lwjgl-openal"
    implementation "org.lwjgl:lwjgl-opengl"
    implementation "org.lwjgl:lwjgl-stb"
    runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
    runtimeOnly "org.lwjgl:lwjgl-assimp::$lwjglNatives"
    runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
    runtimeOnly "org.lwjgl:lwjgl-nfd::$lwjglNatives"
    runtimeOnly "org.lwjgl:lwjgl-openal::$lwjglNatives"
    runtimeOnly "org.lwjgl:lwjgl-opengl::$lwjglNatives"
    runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
    implementation "org.joml:joml:${jomlVersion}"
}

问题分析

build成功但Main.main()失败,说明编译环节无问题,错误出在程序运行阶段。非零退出值1通常由以下原因导致:程序抛出未捕获异常、运行时依赖缺失、Main类配置错误,或原生库加载失败。Gradle弃用警告是独立问题,并非当前运行失败的直接原因。


解决步骤

1. 获取程序运行时的具体错误日志

Gradle默认只提示进程退出状态,未输出程序本身的报错。执行以下命令获取详细运行日志:

./gradlew run --info

或直接在IDE中运行Main类,查看控制台的完整异常栈——这是定位问题的核心步骤。

2. 检查LWJGL原生库配置

你的配置指定了natives-windows,需确认:

  • 当前系统确实是Windows(若为Linux/macOS,需替换为natives-linux或natives-macos)
  • 原生库已正确加入运行时类路径,可通过以下命令验证:
    ./gradlew dependencies --configuration runtimeClasspath
    

3. 配置Gradle的application插件(推荐)

为避免手动运行Main类的类路径问题,在build.gradle中添加application插件并指定主类:

plugins {
    id 'java'
    id 'application' // 添加此插件
}

// 指定你的Main类全限定名
application {
    mainClass = 'org.example.Main'
}

之后执行./gradlew run即可启动程序,Gradle会自动处理类路径和依赖加载。

4. 修复Gradle弃用警告(可选但建议)

执行以下命令查看具体弃用项,根据提示修改build.gradle:

./gradlew run --warning-mode all

5. 验证JDK兼容性

确认LWJGL 3.3.3与JDK 21的兼容性,若存在问题,可尝试降级到JDK 17测试。


总结

优先通过--info参数或IDE运行获取程序本身的报错信息,这是解决非零退出值1的关键。Gradle弃用警告可后续针对性修复,不影响当前程序运行问题的排查。

内容的提问来源于stack exchange,提问作者Mahadi Dwi Nugraha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:30:58