android(或java中)怎样在自己的jar包里集成第三方类库并且可用(不会报错:java.lang.NoClassDefFoundError....)

        估计不少coder friends 在开发android或java项目时都有过自己打jar包给别人使用的经历,这其中有一些人可能跟我一样在打jar包时会遇到一个问题:在打jar包的整个过程中一切正常,如果这个jar里的源代码都是自己所写(没有单独引用第三方开源库),那么不出意外的话这个jar就能正常在apk中使用,但是如果我的jar里又引用了其他的jar(或者直接在maven,gradle等构建工具中集成开源库),那么在apk中使用我们的jar包时可能会报错:"java.lang.NoClassDefFoundError....",这个异常一般指向的是你引用的第三方开源库。这时你很奇怪:这个类怎么可能没定义?这个第三方的开源库明明就在啊?而且我在代码里还能正常使用,写代码时编辑器(比如intellij idea或android studio等)还能自动提示补全呢。当你确定了报错中指向的类确实存在时,这时你就可以考虑报这个错的原因可能是因为打jar包存在问题了。如果你只关心我怎么解决这个问题而不关心我分析出现问题的过程,那么请直接跳到下面"解决过程"的部分。

也可以先看看这个,可能更好点(https://blog.csdn.net/Builder_Taoge/article/details/81183871).

分析过程

这一部分写了一大堆可能感觉是废话的内容,因为真正解决问题的步骤还是下面"解决过程"那一部分。不过这是我遇到这个问题的分析过程,之所以写出来是想给各位一个思路,因为我的这篇文章里说的方式也可能解决不了你的问题,假如确实没有解决你的问题,也许你可以通过我这个分析过程得到一些启发,从而自己找到了适合的解决方式,这才是我写这段的目的。下面开始叙述我的分析过程:

       显然,如果这个类确实有,那么还报这个错的话基本上可以断定是这个类文件根本没有被打包进你的jar包,所以程序找不到这个类。你可能感觉有点啰嗦了,会说:我当然知道这个第三方的开源库没有打进我的jar包,因为解压我的jar包后只能看到我自己写的源文件编译成的class文件[捂脸.png],关键是为什么以及怎么解决啊?
好吧,惭愧的是我现在也没完全确定是不是我想的这样,只是在猜测阶段,不过问题确实是通过这种方式解决了。因为我对gradle,maven这类的工具用的不是很熟,只知道肯定是哪里配置出问题了,比如文件的路径配置,构建脚本(.gradle或者pom.xml等)的写法等。OK,既然用工具不行,那我就手动来吧。下面以我自己的jar包集成okhttp为例说明我是怎么解决的࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值