2
decodeThread = new DecodeThread(activity, decodeFormats, characterSet,
    new ViewfinderResultPointCallback(activity.getViewfinderView()));

对于上面的代码,我遇到了以下异常:

01-24 01:33:02.078: E/AndroidRuntime(708): java.lang.NoClassDefFoundError: com.main.onlinecart.ViewfinderResultPointCallback

该类ViewfinderResultPointCallback存在于调用类的同一包中。对于从同一个包中使用的其他类,我没有收到错误消息。这里可能存在什么问题?有什么与类路径有关的吗?我在哪里可以交叉检查类路径变量?

我正在使用 eclipse(在 mac os x 上)并从运行配置运行项目。

该类ViewfinderResultPointCallback实现了另一个ResultPointCallback不在同一个包中的类,但它存在于项目构建路径中添加的 jar 中。我在日志中看到一个异常:

01-24 01:33:01.968: I/dalvikvm(708): Failed resolving com/main/onlinecart/ViewfinderResultPointCallback; interface 472 'Lcom/google/zxing/ResultPointCallback;' 
01-24 01:33:01.968: W/dalvikvm(708): Link of class 'Lcom/main/onlinecart/ViewfinderResultPointCallback;' failed

但是同一个 jar 中还有许多其他类没有抛出任何错误。

4

3 回答 3

0

大多数时候 java.lang.NoClassDefFoundError 不是实际问题。在此之前应该有另一个例外。您应该在消息 (ViewfinderResultPointCallback) 中寻找在类的静态初始化期间发生的异常。对此类的任何访问都将触发 NoClassDefFound ,但这仅意味着未加载该类。

于 2013-01-23T20:19:23.980 回答
0

不要NoClassDefFoundErrorClassNotFoundException. 如果所讨论的类实现了一个接口并且两者中的任何一个在新版本中提供(它们不再匹配),第一个也可能发生。有关详细信息,请参阅http://javarevisited.blogspot.ch/2011/06/noclassdeffounderror-exception-in.html 。

于 2013-01-23T20:31:37.477 回答
-1

NoClassDefFoundError 是因为我的类依赖于 jar 中的一个接口。当我将 jar 添加到项目的 libs 目录时,错误得到解决。这是必需的,因为我正在处理一个 android 项目,并且在创建 .apk 文件时,它会从 libs 文件夹中添加 jar 以供运行时使用。

于 2013-01-23T21:17:22.103 回答