Question

as I have read a java.lang.VerifyError in many cases hints to referencing incompatible jar files which do not rely on the Android SDK.

My question is, whether there is a way to check, which method calls in particular within the imported jar files are incompatible. Is it possible to list the conflicts?

Like this I would like to check whether it is a lot of effort to make my ready made java programme android compatible or not?

So far I only get an VerifyError and which file causes it. But since it is a file referencing other stuff and having some code, I would like to know at which locations exactly there is the error.

EDIT:

Here you can see the log of the LogCat.

09-21 11:10:03.080: W/dalvikvm(1988): VFY: unable to resolve exception class 427 (L/codec/ContentAccessException;)
09-21 11:10:03.080: W/dalvikvm(1988): VFY: unable to find exception handler at addr 0x16
09-21 11:10:03.080: W/dalvikvm(1988): VFY:  rejected Lsmb/LPP_SM;.start ()[Ljava/lang/String;
09-21 11:10:03.080: W/dalvikvm(1988): VFY:  rejecting opcode 0x0d at 0x0016
09-21 11:10:03.080: W/dalvikvm(1988): VFY:  rejected Lsmb/LPP_SM;.start ()[Ljava/lang/String;
09-21 11:10:03.080: W/dalvikvm(1988): Verifier rejected class Lsmb/LPP_SM;
09-21 11:10:03.080: D/AndroidRuntime(1988): Shutting down VM
09-21 11:10:03.080: W/dalvikvm(1988): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
09-21 11:10:03.110: E/AndroidRuntime(1988): FATAL EXCEPTION: main
09-21 11:10:03.110: E/AndroidRuntime(1988): java.lang.VerifyError: smb/LPP_SM
09-21 11:10:03.110: E/AndroidRuntime(1988):     at com.example.androidtest.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:109)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.app.Activity.performCreate(Activity.java:5008)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.os.Looper.loop(Looper.java:137)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at android.app.ActivityThread.main(ActivityThread.java:4745)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at java.lang.reflect.Method.invokeNative(Native Method)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at java.lang.reflect.Method.invoke(Method.java:511)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-21 11:10:03.110: E/AndroidRuntime(1988):     at dalvik.system.NativeStart.main(Native Method)

I have asked for a list of the problematic classes or function calls. Here I believe I can only see, that the ContentAccessException is the only issue not compatible with Android.

At least, if I comment that part within e.g. LPP_SM the error would vanish. But this Exception is from one of my used libraries, which I cannot change.

Could there be more conflicts?

Was it helpful?

Solution

You should be able to track the problem by carefully reading the output of "adb logcat". You should be able to see the class that could not be found as well as the class that has the bad reference. Search for WARN/dalvikvm just before the exception.

There are a few more information on this thread : Android java.lang.VerifyError?

OTHER TIPS

Are you in Debug mode or using proguard for a release ? the java.lang.VerifyError is due to a different compilator version, if you have any external jars that uses android class (like View) and your target sdk is different from the used one to generate the jar. You will find the class in the Log with error. Can you provide the complete error? If your are using proguard you can prevent preverification using -dontpreverify -dontoptimizeoption.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top