android调用JAR的问题

bjskyhorse 2010-12-29 04:11:19
我有一个第三方的jar,自己写了5个纯粹java的程序A,B,C,D,E,都是算法和操作存储卡相关的,A调用B,B调用C,C调用D,D调用E,E调用第三方的jar,都是在eclipse里面通过 configure build path/add external jar的方式加入了需要调用的jar包,编译通过。生成了A,B,C,D,E 共5个jar.然后我写了一个测试程序,测试这5个jar的功能,我做了一个android app,然后通过 configure build path/add external jar加入了A,B,C,D,E等5个jar,以及那个第3方的jar.编译通过生成了APK,安装这个APK,执行对A的功能测试的时候,提示:
12-29 14:42:50.337 E/dalvikvm( 1431): Could not find class 'com.SD.SCObj.
SCObj', referenced from method com.test.test.
感觉是第三方的jar没有打到apk里面,所以A调用第三方jar里面的东西会出错。
google了一下,有人说,按照这个办法试了下还是不行,安装之后刚运行就出错,而不是先前那样执行A的功能才出错,而且按照先前做法生成的apk是70多K,按照下面方法生成的apk只有30多K。像这种多个jar相互调用,android应该怎么做?
右键工程,

Build path,

java build path,选择libraries

在右边的按钮中点击“Add Library”

选择“User library”,点击“下一步”

点击“User librarys”按钮

在出现的界面中点击“New..”按钮

在弹出的界面中随便起一个名字,点击“确定”

点击“Add jars”按钮选择第三方jar包,点击“确定”完成操作。

这样的话该jar包会被一起打包到apk中,问题也就解决了!
...全文
2170 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
vae819723280 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lynn_jiang 的回复:]
这样打包的方法不可以把包导入到apk吧 我试过了
清除现在加载的包 按下面方法重新加过
直接点项目右键->Build path-> configure build path->Add JAR
就可以把包加入到apk了
[/Quote]

这个怎么只能加在Eclipse中有的??不能加额外的啊?比如说mail.jar等……
bjskyhorse 2010-12-31
  • 打赏
  • 举报
回复
我遇到这样一个问题,不知道该怎么解决这种调用关系下打包的问题。
我有一个第三方的jar,自己写了5个纯粹java的程序A,B,C,D,E,都是算法和操作存储卡相关的,A调用B,B调用C,C调用D,D调用E,E 调用第三方的jar,都是在eclipse里面通过 configure build path/add external jar的方式加入了需要调用的jar包,编译通过。生成了A,B,C,D,E 共5个jar.然后我写了一个测试程序,测试这5个jar的功能,我做了一个android app,然后通过 configure build path/add external jar加入了A,B,C,D,E等5个jar,以及那个第3方的jar.编译通过生成了APK,安装这个APK,执行对A的功能测试的时候,
提示
E/dalvikvm( 1431): Could not find class 'com.SD.SCObj.
SCObj', referenced from method com.test.test.
感觉是第三方的jar没有打到apk里面,所以A调用第三方jar里面的东西会出错

是这样,第三方的jar通过NDK方式来调用一个X.SO,然后A,B,C,D,E等5个程序通过第三方jar转调so,并生成 jar,然后android程序来调用这些jar,结果就遇到问题了。
我试验了这样几种方式,ECLIPSE环境下
1: 程序E:在目录下加入libs/armeabi,结果生成E.JAR,我在android app里面通过add external jar的方式引用这个jar,生成apk,出现上述错误
2. 程序E,不引入so,直接调用jar,然后在android app里面目录下加入入libs/armeabi,修改mk文件,相当于把so和应用一起打包。这是有人告诉我的方式,说可以;但是我存有疑问,E.JAR都没有加入so,将来app调用E怎么能找到E调用的so呢?
3.程序E,加入so,android app也加入,编译就提示:
[2010-12-31 11:10:52 - App_Test] The library 'E.jar' contains native libraries that will not run on the device.
[2010-12-31 11:10:52 - App_Test] The following libraries were found:
[2010-12-31 11:10:52 - App_Test] - libs/armeabi/x.so
reggiekiller 2010-12-31
  • 打赏
  • 举报
回复
还可以调用jar啊,学习
bjskyhorse 2010-12-31
  • 打赏
  • 举报
回复
现在问题是这样:第三方的库比如x.jar是通过NDK方式调用了x.so,我是可以写一个android程序来调用x.jar,这样是没有问题的,也不需要用什么NDK,jni之类的方法,直接引入这个jar好像就可以了。但现在我是用一个纯java程序E去调用x.jar,然后把E打包为E.jar,然后由几个B,C,D,E几个java程序调用这个E,并打包成B.jar,C.jar,D.jar,然后通过一个android应用程序来调用B,C,D,E,结果就提示说:Native libraries detected in "E.jar".如果想达到我前述目的,应当怎么做呢。
dinjay 2010-12-30
  • 打赏
  • 举报
回复
Add External JARs
毛毛虫3号 2010-12-30
  • 打赏
  • 举报
回复
用add jars 就可以打包进去了
我用add jars 打包进去了 其他的不行 删除了重新加了
bjskyhorse 2010-12-30
  • 打赏
  • 举报
回复
confgire build path里面的3个选项,add jars/add external jars/add library,哪个才能把jar打到apk里面,网上说应该用add library,但是不行,我一会试试add jars,那我生成A,B,C,D,E5个jar的时候引用别的jar都用的是add external jars,此处需要修改吗
bjskyhorse 2010-12-30
  • 打赏
  • 举报
回复
我试过第二种方法,问题依旧,感觉是jar根本没有打进去,而且我也不知道这两个方法结果有什么差异,从apk大小看,采用add lib和add external jar两种方法生成的apk,大小差了一倍。
bjskyhorse 2010-12-30
  • 打赏
  • 举报
回复
现在问题是这样,我是在eclipse里面写一个普通的java程序A,第三方的库是android的,一个是a.jar,一个是b.so;第三方库里面的a.jar也是通过jni方式调用的b.so,我当初A打包jar的时候可能没有把b.so加入。如果A是一个andrid程序,我知道怎么加入,so放在libs/armeabi目录下,然后修改MK文件。但是现在我是想在一个普通的 java程序里面把这个so也打进去,应该怎么加?直接把lib目录拷贝过来,然后export jar file就可以?然后B,C,D,E再去调用A.jar?
bjskyhorse 2010-12-30
  • 打赏
  • 举报
回复
Add External JARs,我最初就是这样做的不行,错误提示:12-29 14:42:50.337 E/dalvikvm( 1431): Could not find class 'com.SD.SCObj.
SCObj', referenced from method com.test.test.

感觉是那个APK里面没有打入相关的jar.
毛毛虫3号 2010-12-29
  • 打赏
  • 举报
回复
这样打包的方法不可以把包导入到apk吧 我试过了
清除现在加载的包 按下面方法重新加过
直接点项目右键->Build path-> configure build path->Add JAR
就可以把包加入到apk了
madsky007 2010-12-29
  • 打赏
  • 举报
回复
看到你最后一句话别人肯定以为你已经解决了。 帮你顶下,最好重新描述下问题吧

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧