如何引入第三方jar包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何引入第三方jar包相关的知识,希望对你有一定的参考价值。

andriod中如果引入jar包的方式不对就会出现一些奇怪的错误。
工作的时候恰好有一个jar包需要调用,结果用了很长时间才解决出现的bug。
刚开始是这样引用的(eclipse):
右键工程,Build path,java build path,
选择libraries,在右边的按钮中点击“Add External JARs”,
然后选择合适的jar包(大部分人应该会这样做).
结果控制台立刻报错:conversion to dalvik format failed with error 1。
而且项目上还会出现红叉,虽然项目里并没有错误。
clean一下,项目正常,但是bin里的apk文件和dex文件都没了,运行项目出现错误:Can not find **.apk后来找到原因是因为导入jar包的方式不对,
正确的方法如下:
1,右键工程, Build path, java build path,
2,选择libraries在右边的按钮中点击“Add Library”
3,选择“User library”,点击“下一步”
4,点击“User librarys”按钮在出现的界面中点击“New..”按钮
在弹出的界面中随便起一个名字,点击“确定”
5,点击“Add jars”按钮选择第三方jar包,
点击“确定”完成操作。这样的话该jar包会被一起打包到apk中,问题也就解决了!
参考技术A 下载相应的jar包,复制到WebContent/WEB-INF/lib文件夹下,就可以了

安卓项目如何优先使用自己引入的第三方jar包

正在开发一款Web应用的客户端软件,使用到org.apache.http.client等开源jar包,于是自然引入Httpclient-4.1.3.jar,编写代码,测试,表面上一切正常,返回头里面也绑定了Cookie,后来发现问题:
1、Web端登陆成功状态码是302,失败则是200,而我现在不论失败成功均为200
2、登陆成功头里面有“Set-Cookie”一项,但没有“Location”一项,而且该Cookie无法继续用来请求数据
3、将Web端已绑定好的Cookie复制过来请求数据就能正常请求到数据
后来将关键代码移植到J2SE环境进行测试(当然也要引入相关jar包),以上问题全部没有出现,everything is ok
于是乎,进一步排查发现安卓项目中引入的"android.jar"里面包含了org.apache.http.client等需要用到的库,所以安卓似乎(已验证,确实是这样)默认使用的是安卓自带的库(运行结果不对,出现了以上3个问题,肯定是做了手脚的),而不是我引入的第三方jar包所提供的库
那么,想到如下解决方式:
1、网上下载第三方jar包的源代码,拷贝到工程当中,作为自有代码编译,优先级应该高于android库文件了吧,但由于这样可能拷入的源代码较多,编译费时,效率低下等问题忽略之
2、木有了...
综上所述,各位大侠有没有好的解决方法能让我能使用到我自己引入的jar包呢?
PS:杂乱的描述,木有晕吧?囧rz
To Mr.esido

1、res文件夹?我这个还不设计到资源文件呀!不太明白你说的什么情况,可能没理解我说的,还是我没能明白你说的呢?
2、对啊,里面有显示灰色的目录结构,里面装载的是一些必须的资源文件嘛,也跟我这个问题八杆子打不着边呀
3、咋一看像是在试着解决问题,可左看右看也始终没能看明白,这能起什么作用呢?或者你能不能简单明了的说一些解决办法和解决原理呢(比较专牛角尖,见谅),现在在公司,也没法试一下你说的这种方法到底能起什么作用....
4、跪求再看看我的问题好吗

1:我现在正好也是碰到这个问题,就算把res文件夹打包进jar包中也不可以使用,如果jar包中某些类牵涉到res文件夹下的文件,则报错。
2:你所说的像android sdk那种方式,你可以看一下android.jar这个包,里面的res目录显示也是灰色的,里面的图片或者xml文件你同样无法查看,所以不存在想android.jar那种方式一样的情况。
3:有一种折中的方式,不过需要你的工程源码。即在eclipse下,导入你的工程,然后右键----->Properties----- >Android------>Library 下面的Is Library 选中。 之后在你新建的工程中右键----->Properties----- >Android------>Library 右侧 Add 选中你的工程名(jar)即可。
望采纳。追问

因为要说的太长,我补充了提问,请看看

参考技术A 应用内部自己写ClassLoader,试试看:
ClassLoader loaderA = new MyClassLoader(libPathOne);
ClassLoader loaderB = new MyClassLoader(libPathTwo);
Object1 obj1 = loaderA.loadClass("first.class.binary.name", true)
Object2 obj2 = loaderB.loadClass("second.class.binary.name", true);

具体可以参考StackOverflow:
http://stackoverflow.com/questions/6105124/java-classpath-classloading-multiple-versions-of-the-same-jar-project
参考技术B 网络访问权限加了吗?要不你先用android自带的网络访问api重写试下

以上是关于如何引入第三方jar包的主要内容,如果未能解决你的问题,请参考以下文章

如何引入第三方jar包

如何引入第三方jar包

安卓项目如何优先使用自己引入的第三方jar包

如何在Ant中引入第三方Jar包

java中如何安装.jar包

Springboot引入外部第三方jar包