gradle打成jar包报错 "错误: 找不到或无法加载主类 App"(已经配置过主类)

本文介绍了在使用Gradle打包Java项目时遇到'错误: 找不到或无法加载主类 App'的问题。问题源于手动创建的src目录未被识别。解决方案是通过修改配置文件,确保包含src目录,从而正确打包并运行jar包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将gradle打成jar包(包括依赖)

jar {
    manifest {
        attributes(
                "Manifest-Version": 1.0,
                "Main-Class": "App",
                "Class-Path": configurations.compile.collect { "lib/${it.name}" }.join(' '))
    }
}
task copyJar(type:Copy){

    from configurations.runtime

    into ('build/libs/lib')
}

task release(type: Copy,dependsOn: [build,copyJar]) {

}

执行

gradle release

运行jar包

cd build/libs

报错

错误: 找不到或无法加载主类 App

原因(src自己手动创建的)

刚开始建立gradle 的时候发现没有src目录,自己新建的src,可能没有被识别

解决(添加src目录)

配置文件加入

task "create-dirs" << {
    sourceSets*.java.srcDirs*.each {
        it.mkdirs()
    }
    sourceSets*.resources.srcDirs*.each{
        it.midirs()
    }
}

在这里插入图片描述

转载于:https://www.cnblogs.com/LeesinDong/p/10835279.html

### Python Kivy打项目时 Gradle Wrapper 不到无法加载的问题 当在Python Kivy项目中尝试通过Android Studio其他工具使用`gradlew`命令进行打操作时,如果遇到“不到无法加载 `org.gradle.wrapper.GradleWrapperMain`”的错误提示[^1],这通常意味着Gradle Wrapper未能正确初始化配置存在问题。 #### 可能的原因分析 - **缺少必要的Gradle Wrapper文件**:此问题可能是因为项目的根目录下缺失了与`build.gradle`同级别的`gradle/wrapper/`目录及其内部所需的两个重要文件——`gradle-wrapper.jar`和`gradle-wrapper.properties`[^3]。 - **环境变量设置不当**:有时即使存在上述提到的关键文件夹及文件,但如果系统的Java环境变量(如JAVA_HOME)未被正确定义是指向了一个不兼容版本的JDK/JRE,则也可能引发此异常情况[^4]。 - **路径中含有特殊字符空格**:对于某些操作系统而言,在构建脚本所涉及的所有路径中不应含有任何非ASCII字符集成员以及空白符;特别是Windows平台下,建议避免使用含中文字符的工作空间位置来存放源码工程。 #### 解决方案 为了修复这个特定于Kivy打流程中的Gradle相关问题: 1. 确认当前工作区内的`.gradle`、`gradle/wrapper/`这两个隐藏文件夹确实存在于预期的位置,并且它们各自含了完整的组件集合; 2. 如果这些资源确实丢失损坏,可以通过官方渠道重新获取最新版的Gradle分发并手动复制所需部分到本地仓库中去恢复之。另一种更简便的方法是在终端里切换至目标应用所在的顶层目录之后输入如下指令让系统自动完成下载动作: ```bash gradle wrapper --gradle-version <desired_version> ``` 3. 验证已安装好的JVM实例是否满足最低限度的要求规格说明书中给出的标准,必要时调整全局性的PATH参数使其能够顺利识别合法有效的可执行程序入口点; 4. 尽量选用不含复杂编码序列的目标存储地点保存整个开发周期里的所有制品物,从而减少潜在的风险因素干扰正常的编译过程。 ```python import os from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello World') if __name__ == '__main__': env_path = os.environ.get('GRADLE_USER_HOME') print(f"Current GRADLE_USER_HOME is set to {env_path}") MyApp().run() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值