android中自带的json使用起来不是很方便,想使用net.sf.json,结果运行的时候又发现有异常:java.lang.VerifyError: net/sf/json/JSONObject
经过各种搜索,发现原来是我们使用的json-lib-2.4-jdk15.jar包要引用其他的几个jar包,这就表示想使用net.sf.json还不能只是简单的加一个jar包
参考官网配置:http://json-lib.sourceforge.net/index.html
所有需要的jar包如下
commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
配好以上jar包后还不够,编译的时候会报冲突错误:multiple dex files define Lorg/apache/commons/collections/Buffer
发现commons-beanutils-1.8.0.jar包中有和commons-collections-3.2.1.jar冲突的类,但是本人又想使用commons-collections-3.2.1.jar包
方法一(简单粗暴):直接把commons-beanutils-1.8.0.jar中的org/apache/commons/collections目录和目录下的class直接删掉(用解压缩工具打开,直接删除操作),这样再编译就不会报错了
方法二:
首先修改Gradle配置文件,启用MultiDex并包含MultiDex支持:
(我到这一步就好用了,但是要是还不行就得继续)
然后让应用支持多DEX文件。在MultiDexApplication JavaDoc中描述了三种可选方法:
1、在AndroidManifest.xml的application中声明android.support.multidex.MultiDexApplication;
2、如果你已经有自己的Application类,让其继承MultiDexApplication;
3、如果你的Application类已经继承自其它类,你不想修改它,那么可以重写attachBaseContext()方法:
最后运行就可以了,也可能打包了,这个问题貌似是工程中的方法数量超过安卓规定65536个方法数了