安卓项目如何优先使用自己引入的第三方jar包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓项目如何优先使用自己引入的第三方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、跪求再看看我的问题好吗
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重写试下
如何在Ant中引入第三方Jar包
1.在项目的根目录下建立libs目录,然后将你需要的第三方JAR包放在该目录下。2.在Eclipse中,在项目上右键,先择Properties,会出现一个对话框,在对话框左边选择Java Build Path,然后点击右边的Add Class Folder,选择项目下的刚刚新建的libs目录。
3.这样就已经把第三方的JAR包引入了,直接run就可以了。 参考技术A 在使用Ant时,免不了因为项目引用了第三方Jar包导致无法通过编译,可以在Ant脚本中添加以下元素来引用第三方库。
步骤:
1、在build.xml的<project>元素中添加子元素,如下:
<path id="lib_classpath">
<fileset dir="WebContent/WEB-INF/lib/">
<include name="*.jar"/>
</fileset>
</path>
Note:请修改成自己的Lib路径。
2、在你的<target>的子元素<javac>元素中添加子元素<classpath>,如下:
<classpath refid="lib_classpath"/>本回答被提问者采纳
以上是关于安卓项目如何优先使用自己引入的第三方jar包的主要内容,如果未能解决你的问题,请参考以下文章