Gradle项目导入自行打包的jar包失败,构建提示skija包不存在
你当前打包生成的scenes.jar中存放的是.java源代码文件,Java和Gradle编译时只会识别Jar包内的.class字节码文件,因此无法识别到skija包结构,才会报包不存在的错误。
解决步骤
- 先编译Java源代码生成字节码:将你写的
skija.scenes包下的所有Java文件编译为.class文件,可以通过javac命令,或者IDE的构建功能生成编译输出目录(比如Gradle项目默认是build/classes/java/main,Maven项目默认是target/classes)。 - 重新打包Jar:进入编译输出的根目录(该目录下可以直接看到
skija文件夹,skija/scenes路径下全是.class文件),执行打包命令jar cfv scenes.jar *。 - 验证Jar包内容:执行
jar tf scenes.jar检查,输出的路径下应该是skija/scenes/xxx.class格式的文件,而非.java后缀的源文件即打包正确。 - 清理冗余Gradle配置:
- 删掉
settings.gradle中你新增的pluginManagement下的buildscript、flatDir、classpath相关配置,你引入的是项目编译依赖,不是Gradle插件依赖,这部分配置完全无效。 - 简化
build.gradle配置,删除重复的依赖声明,只保留一份依赖配置即可,示例如下:
repositories { // 保留你原本需要的其他仓库,比如mavenCentral等 mavenCentral() flatDir { dirs 'lib' } } dependencies { // 仅保留这一行即可引入lib目录下所有Jar包,其余相关依赖声明全部删除 implementation fileTree(dir: 'lib', include: ['*.jar']) } - 删掉
- 重新构建项目:将新打包的正确Jar包放入项目
lib目录替换旧文件,执行gradlew clean build(Windows系统)或./gradlew clean build(Mac/Linux系统)重新构建项目即可。如果IDEA仍有报错提示,点击Gradle面板的刷新按钮,或者执行File -> Invalidate Caches...重启IDEA即可。
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

