1

我正在尝试在我的 Android 应用程序中使用 jCIFS 1.3.17 版 JAR 文件。该应用程序正确编译并部署到我的手机。当我的应用程序尝试使用 jCIFS 库时,我收到以下错误消息:

E/dalvikvm( 3176): Could not find class 'jcifs.smb.SmbFile', referenced from method com.test.androidapp.service.BackgroundService.copyFiles
W/dalvikvm( 3176): VFY: unable to resolve new-instance 94 (Ljcifs/smb/SmbFile;) in Lcom/test/androidapp/service/BackgroundService;
D/dalvikvm( 3176): VFY: replacing opcode 0x22 at 0x0001
W/dalvikvm( 3176): VFY: unable to resolve exception class 93 (Ljcifs/smb/SmbException;)
W/dalvikvm( 3176): VFY: unable to find exception handler at addr 0x6c
W/dalvikvm( 3176): VFY:  rejected Lcom/test/androidapp/service/BackgroundService;.copyFiles ()Z
W/dalvikvm( 3176): VFY:  rejecting opcode 0x0d at 0x006c
W/dalvikvm( 3176): VFY:  rejected Lcom/test/androidapp/service/BackgroundService;.copyFiles ()Z
W/dalvikvm( 3176): Verifier rejected class Lcom/test/androidapp/service/BackgroundService;
W/dalvikvm( 3176): Class init failed in newInstance call (Lcom/test/androidapp/service/BackgroundService;)
D/AndroidRuntime( 3176): Shutting down VM
W/dalvikvm( 3176): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
E/AndroidRuntime( 3176): FATAL EXCEPTION: main
E/AndroidRuntime( 3176): java.lang.VerifyError: com.test.androidapp.service.BackgroundService
E/AndroidRuntime( 3176):    at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 3176):    at java.lang.Class.newInstance(Class.java:1409)
E/AndroidRuntime( 3176):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2174)
E/AndroidRuntime( 3176):    at android.app.ActivityThread.access$2500(ActivityThread.java:132)
E/AndroidRuntime( 3176):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1102)
E/AndroidRuntime( 3176):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 3176):    at android.os.Looper.loop(Looper.java:150)
E/AndroidRuntime( 3176):    at android.app.ActivityThread.main(ActivityThread.java:4263)
E/AndroidRuntime( 3176):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3176):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 3176):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 3176):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 3176):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(  129):   Force finishing activity com.test.androidapp/.activity.MainActivity

有人可以解释为什么 Android 没有找到 jCIFS 吗?

4

1 回答 1

3

假设您使用的是最新版本的 Android SDK 工具(以及适用于 Eclipse 的 ADT 插件),添加第三方 JAR 的正确过程是:

步骤#1:在您的项目中创建一个libs/目录

第 2 步:将 JAR 放入libs/目录中

请注意,您不需要弄乱构建路径或任何东西——这现在在 Eclipse 中自动处理,就像从一开始就用于命令行构建一样。

这个错误感觉就像您的 JAR 在编译时可用但没有打包在您的 APK 中,例如 Eclipse 知道 JAR(例如,通过手动构建路径调整)但 Android 工具不知道 JAR。

于 2012-05-03T11:17:47.263 回答