Android Studio中JavaExec报错:找不到或无法加载主类
搞定JavaExec找不到主类的问题
我来帮你解决这个打包前运行Java脚本的问题~你遇到的Could not find or load main class错误,核心原因是Gradle的JavaExec任务没配置正确的类路径——虽然你的BuildScript.class已经编译好了,但默认情况下JavaExec不会自动把你项目里的编译输出目录加到类路径里,自然找不到你的自定义类。
修复后的build.gradle配置
把你原来的任务配置改成下面这样就行:
task runBuildScript(type: JavaExec) { // 指定你的主类全限定名 main = 'net.bgreco.myapp.build.BuildScript' // 关键:把当前模块的编译输出和依赖都加入类路径 classpath = sourceSets.main.runtimeClasspath } tasks.whenTaskAdded { theTask -> if (theTask.name.contains('package')) { theTask.dependsOn 'runBuildScript' } }
为啥这样就能解决?
sourceSets.main.runtimeClasspath是Gradle提供的一个便捷路径集合,它包含了:
- 你
app/src/main/java下代码编译后的class文件(默认在app/build/classes/java/main/目录) - 你的
app模块依赖的所有第三方库的class文件
这样JavaExec执行时就能准确定位到你的BuildScript类了。
额外排查小技巧
如果还是有问题,可以加个小代码打印类路径,方便排查:
task runBuildScript(type: JavaExec) { main = 'net.bgreco.myapp.build.BuildScript' classpath = sourceSets.main.runtimeClasspath // 打印类路径,确认是否包含你的class文件目录 doFirst { println "当前类路径:${classpath.asPath}" } }
运行任务时就能看到实际用的类路径,检查有没有包含app/build/classes/java/main/这个目录。
内容的提问来源于stack exchange,提问作者bgreco
相关产品推荐
相关产品推荐

