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 に答える