提问者:小点点

NoClassDefFoundError包私有scala对象在Android项目


我正在尝试在Android项目中使用Json4s。我的项目编译等,但我看到以下错误:

我不确定dalvikvm是否有特定的问题,或者只是proGuard问题。如果相关,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._

接下来是一堆案例类等。

任何关于如何解决此问题的想法?


共1个答案

匿名用户

看起来代码中缺少类com. thoughtworks.paranamer.CachingParanamer。这可能是因为它一开始就从库中缺少,或者因为ProGuard已将其删除或重命名(错误?)。

在前一种情况下,您应该确保所有必要的库都存在于您的libs目录中。如果输入中似乎缺少任何类,ProGuard应该抱怨。

在后一种情况下,您应该确保您在AndroidSDK中使用的是最新版本的ProGuard(此时为4.8或4.9beta)。如果这没有帮助,您可以尝试显式保留该类:

-keep class com.thoughtworks.paranamer.CachingParanamer

这不太可能是一个合适的解决方案,因为ProGuard真的应该为你解决这个问题。

相关问题