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

Gradle构建后运行单独class文件提示找不到或无法加载主类

问题根因

直接执行class文件报错是两个原因共同导致的:

  • Java命令使用错误:java 命令执行编译后的class文件时,不能直接传入.class文件的完整路径,需要先通过-cp/-classpath参数指定类所在的根目录,再传入不带.class后缀的类名。你写的java build\classes\java\main\JaJson.class会被Java识别为查找名为build.classes.java.main.JaJson.class的全限定类,自然找不到对应类。
  • Gradle配置存在冗余:你自定义了没用的single SourceSet和compileSingle任务,虽然当前没有影响编译结果,但后续修改配置时容易出现源集冲突问题。
解决方案

立即修复执行命令

将你原有命令中执行class的部分替换为下面的写法即可正常运行:

java -cp build\classes\java\main JaJson

修改后的完整执行命令为:

gradle build && java -jar build\libs\jajson-1.2.1.jar && java -cp build\classes\java\main JaJson

可选配置优化(推荐)

删除build.gradle中的冗余配置,避免后续出现潜在问题:

  1. 移除未使用的single SourceSet配置
  2. 移除未使用的compileSingle自定义任务
  3. 规范配置main源集的源码路径

优化后的build.gradle核心配置片段如下:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'

mainClassName = "JaJson"
repositories { 
    mavenCentral() 
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
}

// 规范配置main源集的源码路径,替换原有冗余的single源集配置
sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
}

jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'JaJson'
    )
  }
}

compileJava {
    options.release = 7
}

version = '1.2.1'

dependencies {
    implementation "joda-time:joda-time:2.2"
    testImplementation "junit:junit:4.12"
}

内容的提问来源于stack exchange,提问作者Bussiere

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:36:04