2013-02-01 2 views
0

Android 프로젝트에서 Json4s를 사용하려고합니다. 내 프로젝트는 등, 컴파일, 그러나 나는 다음과 같은 오류가보고 있어요 : 특별히 아니면 그냥 난독 화의 발행 dalvikvm에 문제가 있다면NoClassDefFoundError Android 프로젝트의 private scala 오브젝트 용

W/dalvikvm(24527): VFY: unable to find class referenced in signature (Lcom/thoughtworks/paranamer/CachingParanamer;) I/dalvikvm(24527): Could not find method com.thoughtworks.paranamer.CachingParanamer.lookupParameterNames, referenced from method org.json4s.Meta$ParanamerReader$.lookupParameterNames W/dalvikvm(24527): VFY: unable to resolve virtual method 11: Lcom/thoughtworks/paranamer/CachingParanamer;.lookupParameterNames (Ljava/lang/reflect/AccessibleObject;)[Ljava/lang/String; D/dalvikvm(24527): VFY: replacing opcode 0x6e at 0x0008 E/dalvikvm(24527): Could not find class 'com.thoughtworks.paranamer.CachingParanamer', referenced from method org.json4s.Meta$. W/dalvikvm(24527): VFY: unable to resolve new-instance 15 (Lcom/thoughtworks/paranamer/CachingParanamer;) in Lorg/json4s/Meta$; D/dalvikvm(24527): VFY: replacing opcode 0x22 at 0x0013 W/dalvikvm(24527): VFY: unable to find class referenced in signature (Lcom/thoughtworks/paranamer/CachingParanamer;) D/dalvikvm(24527): DexOpt: unable to opt direct call 0x0009 at 0x17 in Lorg/json4s/Meta$;. D/dalvikvm(24527): DexOpt: unable to opt direct call 0x000a at 0x1a in Lorg/json4s/Meta$;. W/dalvikvm(24527): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lorg/json4s/Meta$; W/System.err(24527): java.lang.ExceptionInInitializerError W/System.err(24527): at org.json4s.Extraction$.mkMapping$1(Extraction.scala:207) W/System.err(24527): at org.json4s.Extraction$.org$json4s$Extraction$$extract0(Extraction.scala:214) W/System.err(24527): at org.json4s.Extraction$.extract(Extraction.scala:47) W/System.err(24527): at org.json4s.ExtractableJsonAstNode.extract(ExtractableJsonAstNode.scala:21) W/System.err(24527): at models.Metadata$$anon$1.(Metadata.scala:21) W/System.err(24527): at models.Metadata$.fromJson(Metadata.scala:20) W/System.err(24527): at my.last.attempt.MainActivity.doStuff(MainActivity.scala:55) W/System.err(24527): at my.last.attempt.MainActivity.onCreate(MainActivity.scala:18) W/System.err(24527): at android.app.Activity.performCreate(Activity.java:5048) W/System.err(24527): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) W/System.err(24527): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052) W/System.err(24527): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) W/System.err(24527): at android.app.ActivityThread.access$700(ActivityThread.java:139) W/System.err(24527): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) W/System.err(24527): at android.os.Handler.dispatchMessage(Handler.java:99) W/System.err(24527): at android.os.Looper.loop(Looper.java:137) W/System.err(24527): at android.app.ActivityThread.main(ActivityThread.java:4918) W/System.err(24527): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err(24527): at java.lang.reflect.Method.invoke(Method.java:511) W/System.err(24527): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) W/System.err(24527): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) W/System.err(24527): at dalvik.system.NativeStart.main(Native Method) W/System.err(24527): Caused by: java.lang.NoClassDefFoundError: com.thoughtworks.paranamer.CachingParanamer W/System.err(24527): at org.json4s.Meta$.(Meta.scala:93) W/System.err(24527): at org.json4s.Meta$.(Meta.scala) W/System.err(24527): ... 22 more I/dalvikvm(24527): Rejecting re-init on previously-failed class Lorg/json4s/Meta$; v=0x0 D/AndroidRuntime(24527): Shutting down VM W/dalvikvm(24527): threadid=1: thread exiting with uncaught exception (group=0x40dc0438) E/AndroidRuntime(24527): FATAL EXCEPTION: main E/AndroidRuntime(24527): java.lang.NoClassDefFoundError: org/json4s/Meta$ E/AndroidRuntime(24527): at org.json4s.Extraction$.mkMapping$1(Extraction.scala:207) E/AndroidRuntime(24527): at org.json4s.Extraction$.org$json4s$Extraction$$extract0(Extraction.scala:214) E/AndroidRuntime(24527): at org.json4s.Extraction$.extract(Extraction.scala:47) E/AndroidRuntime(24527): at org.json4s.ExtractableJsonAstNode.extract(ExtractableJsonAstNode.scala:21) E/AndroidRuntime(24527): at my.last.attempt.MainActivity.onCreate(MainActivity.scala:44) E/AndroidRuntime(24527): at android.app.Activity.performCreate(Activity.java:5048) E/AndroidRuntime(24527): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) E/AndroidRuntime(24527): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052) E/AndroidRuntime(24527): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) E/AndroidRuntime(24527): at android.app.ActivityThread.access$700(ActivityThread.java:139) E/AndroidRuntime(24527): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) E/AndroidRuntime(24527): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(24527): at android.os.Looper.loop(Looper.java:137) E/AndroidRuntime(24527): at android.app.ActivityThread.main(ActivityThread.java:4918) E/AndroidRuntime(24527): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(24527): at java.lang.reflect.Method.invoke(Method.java:511) E/AndroidRuntime(24527): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) E/AndroidRuntime(24527): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) E/AndroidRuntime(24527): at dalvik.system.NativeStart.main(Native Method)

잘 모르겠어요. 이 관련이있는 경우, Json4s.Meta의 소스는 다음과 같습니다

package org.json4s 

import java.lang.reflect.{Constructor => JConstructor, Field, Type, ParameterizedType, GenericArrayType} 
import java.util.Date 
import java.sql.Timestamp 
import com.thoughtworks.paranamer.{ParameterNamesNotFoundException, BytecodeReadingParanamer, CachingParanamer} 
import scalashim._ 

case class TypeInfo(clazz: Class[_], parameterizedType: Option[ParameterizedType]) 

trait ParameterNameReader { 
    def lookupParameterNames(constructor: JConstructor[_]): Traversable[String] 
} 

private[json4s] object Meta { 
    import com.thoughtworks.paranamer._ 

이 경우 클래스의 무리 얹는 등

나는이 문제를 해결할 수있는 방법에 대한 어떻게 생각을?

답변

0

코드에서 com.thoughtworks.paranamer.CachingParanamer 클래스가 누락 된 것 같습니다. 이는 라이브러리에서 시작하지 않았거나 ProGuard가 라이브러리를 제거했거나 이름을 잘못 변경했기 때문일 수 있습니다 (잘못 되었습니까?).

전자의 경우, 필요한 모든 라이브러리가 libs 디렉토리에 있는지 확인해야합니다. ProGuard는 입력에서 누락 된 클래스가 있으면 불평해야합니다.

후자의 경우 Android SDK에서 최신 버전의 ProGuard (현재 4.8 또는 4.9 베타)를 사용하고 있는지 확인해야합니다. 이 방법으로 문제가 해결되지 않으면, 당신은 명시 적으로 클래스를 유지하기 위해 시도 할 수 있습니다 : 그것은 적절한 해결책이 될 가능성이있어

-keep class com.thoughtworks.paranamer.CachingParanamer 

, ProGuard에서 정말 당신을 위해 이것을 파악해야하기 때문이다.

관련 문제