2014-07-12 2 views
1

sun.misc.Unsafe을 사용하는 Android에서 Java 라이브러리 jar를 사용하려고합니다. 내가 sun.misc.Unsafe 안드로이드 API의 일부가 아닌 이해로 라이브러리를 호출은 지금까지java.lang.NoSuchMethodError sun.misc.Android에서 외부 Jar로 안전하지 않음

java.lang.NoSuchMethodError: No virtual method ensureClassInitialized(Ljava/lang/Class;)V in class Lsun/misc/Unsafe; or its super classes (declaration of 'sun.misc.Unsafe' appears in /system/framework/core-libart.jar)

가 발생합니다. 그래서 내 앱에 sun.misc.Unsafe을 수동으로 포함 시키려고했습니다 (here에서 파일을 다운로드했습니다). 그러나 예외는 여전히 발생합니다.

어떤 아이디어라도 Android에서 라이브러리 jar를 어떻게 사용할 수 있습니까?

+0

라이브러리는'sun. *'패키지의 클래스를 사용하여 문제를 요청합니다. 이것이 이루어져서는 안되는 이유가 있습니다. – Henry

+1

그렇다면 Android에서 라이브러리를 사용할 수 없다는 뜻입니까? 그것을 작동시키는 어떤 방법이 있습니까? –

답변

3

안드로이드에서 라이브러리 항아리를 어떻게 사용할 수 있습니까?

sun.misc.Unsafe의 안드로이드 버전 (here 참조)이지만, 특정 방법을 포함하지 않습니다. (이 방법이 Java 7에서 도입되었다고 가정합니다 ...)

Dalvik/Android에서 OpenJDK 버전을 사용하는 것은 작동하지 않습니다. 왜냐하면 Dalvik VM에서 구현되지 않은 원시 메소드에 의존하기 때문입니다. (그리고 Davlik이 Android 버전 대신 OpenJDK 버전을로드하는 것을 관리하지 않은 것처럼 보입니다.)

일부 Unsafe 메소드는 Android에서는 사용할 수 있지만 버전의 것만 사용할 수 있습니다 내가 연결된 수업의

0

소스에서 라이브러리를 다시 작성 하고ClassInitialized를 호출해야합니다. 그것들을 allocateInstance로 바꾸십시오. 클래스를 구체적으로하거나 던지기 "인스턴스"에 대한 생성자를 호출 할 필요없이 똑같은 작업을 수행합니다.

관련 문제