컴파일하는 매우 간단한 프로젝트가 있지만 에뮬레이터에서 시작할 수 없습니다. 주석이주석이 달린 인수가있는 개인 메소드의 경우 java.lang.VerifyError
private void bar(String a) {} // OK
를 제거하거나 방법 가시성이 변경되었을 경우
private void bar(@Some String a) {} // java.lang.VerifyError
이 문제는 피할 수 있습니다 : 문제는이 방법입니다
void bar(@Some String a) {} // OK
public void bar(@Some String a) {} // OK
protected void bar(@Some String a) {} // OK
원래의 방법으로 잘못 어떤 생각 ? 이것이 달비 크 버그입니까?
어떤 하나의 코드로 실험하고자 whould 경우는 여기있다 :
Test.java :
public class Test {
private void bar(@Some String a) {}
public void foo() {
bar(null);
}
}
Some.java :
public @interface Some {}
MainActivity.java :
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Test().foo();
}
}
S 압정 추적 :
ERROR/dalvikvm(1358): Could not find method com.my.Test.bar, referenced from method com.my.Test.foo
WARN/dalvikvm(1358): VFY: unable to resolve direct method 11: Lcom/my/Test;.bar (Ljava/lang/String;)V
WARN/dalvikvm(1358): VFY: rejecting opcode 0x70 at 0x0001
WARN/dalvikvm(1358): VFY: rejected Lcom/my/Test;.foo()V
WARN/dalvikvm(1358): Verifier rejected class Lcom/my/Test;
DEBUG/AndroidRuntime(1358): Shutting down VM
WARN/dalvikvm(1358): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
ERROR/AndroidRuntime(1358): Uncaught handler: thread main exiting due to uncaught exception
ERROR/AndroidRuntime(1358): java.lang.VerifyError: com.my.Test
ERROR/AndroidRuntime(1358): at com.my.MainActivity.onCreate(MainActivity.java:13)
ERROR/AndroidRuntime(1358): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
ERROR/AndroidRuntime(1358): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
ERROR/AndroidRuntime(1358): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
ERROR/AndroidRuntime(1358): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
ERROR/AndroidRuntime(1358): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
ERROR/AndroidRuntime(1358): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(1358): at android.os.Looper.loop(Looper.java:123)
ERROR/AndroidRuntime(1358): at android.app.ActivityThread.main(ActivityThread.java:3948)
ERROR/AndroidRuntime(1358): at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(1358): at java.lang.reflect.Method.invoke(Method.java:521)
ERROR/AndroidRuntime(1358): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
ERROR/AndroidRuntime(1358): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
ERROR/AndroidRuntime(1358): at dalvik.system.NativeStart.main(Native Method)
이 또한 Android Studio에서도 발생하는 것으로 나타났습니다. 그러나 아무런 주석이 없었다.액세스 수정자를 개인에서 공개로 변경했으며 매력처럼 작동합니다. 매우 이상합니다. –