5

別のAndroidアプリケーションでライブラリとして使用されるAndroidアプリケーションを作成しました。ライブラリとして機能するAndroidアプリでサードパーティのjarファイルをいくつか使用しました。このライブラリをAndroidアプリケーションにリンクして実行すると、ライブラリに存在するクラスにアクセスしようとすると、検証エラーが発生します。ここでブロックされている問題が私にとって何であるかを教えてもらえますか?どんな助けでも大歓迎です。

ここにログを添付しました。Parser1はライブラリ内のクラスです。Parser1クラスのオブジェクトを作成しようとすると、行にエラーが発生します。

06-06 10:05:43.742: WARN/dalvikvm(224): VFY: unable to resolve static method 3084: Lorg/codehaus/jackson/JsonToken;.values ()[Lorg/codehaus/jackson/JsonToken;
06-06 10:05:43.742: DEBUG/dalvikvm(224): VFY: replacing opcode 0x71 at 0x0005
06-06 10:05:43.742: DEBUG/dalvikvm(224): Making a copy of Lcom/support/utils/Parser1;.$SWITCH_TABLE$org$codehaus$jackson$JsonToken code (522 bytes)
06-06 10:05:43.752: WARN/dalvikvm(224): VFY: unable to find class referenced in signature (Lorg/codehaus/jackson/JsonParser;)
06-06 10:05:43.752: INFO/dalvikvm(224): Could not find method org.codehaus.jackson.JsonParser.getCurrentToken, referenced from method com.support.utils.Parser1.addSectionContentData
06-06 10:05:43.761: WARN/dalvikvm(224): VFY: unable to resolve virtual method 3077: Lorg/codehaus/jackson/JsonParser;.getCurrentToken ()Lorg/codehaus/jackson/JsonToken;
06-06 10:05:43.761: DEBUG/dalvikvm(224): VFY: replacing opcode 0x74 at 0x0002
06-06 10:05:43.761: DEBUG/dalvikvm(224): Making a copy of Lcom/support/utils/Parser1;.addSectionContentData code (2421 bytes)
06-06 10:05:43.761: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;)
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;)
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to resolve exception class 685 (Lorg/codehaus/jackson/JsonParseException;)
06-06 10:05:43.771: WARN/dalvikvm(224): VFY: unable to find exception handler at addr 0x19b
06-06 10:05:43.771: WARN/dalvikvm(224): VFY:  rejected Lcom/support/utils/Parser1;.addSectionContentData (Lorg/codehaus/jackson/JsonParser;Ljava/util/List;Lcom/support/ModelClasses/SectionContent;Lcom/support/ModelClasses/FeatureInfo;ZZLjava/lang/String;)Ljava/util/List;
06-06 10:05:43.781: WARN/dalvikvm(224): VFY:  rejecting opcode 0x0d at 0x019b
06-06 10:05:43.781: WARN/dalvikvm(224): VFY:  rejected Lcom/support/utils/Parser1;.addSectionContentData (Lorg/codehaus/jackson/JsonParser;Ljava/util/List;Lcom/support/ModelClasses/SectionContent;Lcom/support/ModelClasses/FeatureInfo;ZZLjava/lang/String;)Ljava/util/List;
06-06 10:05:43.781: WARN/dalvikvm(224): Verifier rejected class Lcom/support/utils/Parser1;
06-06 10:05:43.793: WARN/dalvikvm(224): threadid=15: thread exiting with uncaught exception (group=0x4001b188)
06-06 10:05:43.793: ERROR/AndroidRuntime(224): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception
06-06 10:05:43.812: ERROR/AndroidRuntime(224): java.lang.RuntimeException: An error occured while executing doInBackground()
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.lang.Thread.run(Thread.java:1096)
06-06 10:05:43.812: ERROR/AndroidRuntime(224): Caused by: java.lang.VerifyError: com.support.utils.Parser1
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at com.Sample.checkforversioning(Sample.java:652)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at com.Sample$checkVersionThread.doInBackground(Sample.java:682)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at com.Sample$checkVersionThread.doInBackground(Sample.java:1)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-06 10:05:43.812: ERROR/AndroidRuntime(224):     ... 4 more
06-06 10:05:43.832: INFO/Process(52): Sending signal. PID: 224 SIG: 3

ありがとう、Senthil.M

4

6 に答える 6

11

Eclipse、 に進みProject properties -> Java Build Pathます。タブを選択し、Order and Exportサードパーティの jar を確認します。

于 2012-05-20T22:28:00.343 に答える
2

これは、Android SDK にない Java の何かにアクセスする jar 内の何かが原因である可能性があります。LogCat で例外を確認すると、何が欠けているかがわかります。サードパーティの jar のソースがある場合は、それらをプロジェクトに直接含めてみてください。それは問題を特定するのに役立ちます。

また、sdk に付属の「dx」ツールを使用して jar ファイルを実行する必要があります。

于 2011-06-06T04:52:05.017 に答える
0

VerifyErrorProGuardを使用してアプリのリリースバージョンをビルドした後に取得する場合は、最適化の問題に関連している可能性があります。を使用して最適化を無効にすることを基本的に提案しているドキュメントを参照してください-dontoptimize

于 2012-11-13T16:53:20.843 に答える
0

ant を使用している場合は、すべての外部 jar を次のディレクトリ "libs" に追加し、新しいファイルに次の行を追加する必要があります: ant.properties: jar.libs.dir=libs

于 2012-06-16T04:59:24.123 に答える
0

対応するクラスがv.8 APIに含まれていないため、v.8 APIデバイスで例外SQLDataExceptionをキャッチしようとしたため、同じエラーが発生しました(そのクラスがv.14デバイスではエラーは発生しませんでした含まれています)。実際、SQLDataException.class は v.8 API の android.jar だけに存在するのではなく、v.14 API に含まれています。そのため、例外 SQLDataException を例外 SQLException (SQLDataException はサブクラス) に置き換えたところ、アプリは両方の API デバイスで正常に動作するようになりました。

于 2013-10-11T06:43:58.253 に答える