jar里面引用jar引发的问题

本文探讨了在优化项目中遇到的jar包重复utils类问题,通过删除重复并创建单独的utils.jar引用,发现A.jar不会自动包含引用的jar。解决方法包括在M应用中添加utils.jar依赖和理解索引文件的作用。关键点在于正确处理jar包引用以确保类查找的正确性。

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

最近在优化项目看到多个 jar(A.jar B.jar C.jar) 包里面都创建了同样的 utils 类,里面代码都大同小异,于是乎就删除了这些utils类,创建了一个utils.jar 给其他jar(A.jar B.jar C.jar) 引用,然后再把 A.jar B.jar C.jar 提供给其他apk 使用,然后编译神奇的发现 A.jar B.jar C.jar 竟然找不到 utils 里面的类。

最后总结出一个结论如下:

A.jar 里面简单这样写

dependencies {
 	api files('lib/utils.jar')
}

那么 A 在生成 jar 包时是不会把utils.jar打包进去的,为啥没有深究,解决方案如下:

方案一:

M 应用依赖 A.jar 时,编译时警告找不到 utils.jar 里面的类,然后 error: Please correct the above warnings first. 报错如下

Warning: com.hsae.autosdk.vehicle.apahmi.ApaHmi: can’t find referenced class com.hsae.libutils.LogUtils
Warning: com.hsae.autosdk.vehicle.apahmi.ApaHmi: can’t find referenced class com.hsae.libutils.LogUtils
Warning: com.hsae.autosdk.vehicle.dualscreen.DualScreen: can’t find referenced class com.hsae.libutils.LogUtils
Warning: com.hsae.autosdk.vehicle.dualscreen.DualScreen: can’t find referenced class com.hsae.libutils.LogUtilsWarning: there were 52 unresolved references to classes or interfaces.
You may need to add missing library jars or update their versions.
If your code works fine without the missing classes, you can suppress
the warnings with ‘-dontwarn’ options.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Error: Please correct the above warnings first.

只需要在 M 应用的依赖关系下添加 utils.jar 的依赖即可。
这里有一点很神奇,这里警告的是在 A 里面找不到 utils 类,为啥在 M 应用在添加对 utils 的依赖,A 里面就可以找到utils?

方案二:

添加Jar包相关的索引文件,大概的意思就是通过索引文件 让 A.jar 找到utils.jar ,可以网上搜索下相关的文章,未亲自测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值