Java - Android - NoClassDefFoundError - Logcat中的“找不到类”错误

时间:2013-12-12 22:27:47

标签: java android eclipse noclassdeffounderror android-sdk-2.3

首先,我意识到类似的问题在这里发布了很多。但是我已经找到了所有可以找到类似问题的答案,而且还没有任何工作,所以想知道是否有人可以帮助我。

我正在尝试使用Android客户端和笔记本电脑上运行的服务器应用程序开发一个简单的聊天应用程序。这包括一个常规的Java“common”项目,该项目包含用于通过套接字传递消息的类。

首先我尝试在Android项目中引用“常见”项目,但经过一些阅读后放弃了这个想法。

现在我已导出公共项目的jar文件,并将其导入到我的Android项目中,方法是将其复制到“libs”文件夹中,然后选择Build Path>添加到构建路径。我也去了Properties> Java构建路径>订购和导出并检查库并将其移至订单的顶部。

我还将“gen”项目移到了构建顺序中的“src”项目之上。

还会检查Android私有库。一切都经过检查。

当我作为Android应用程序调试到我的Samsung S3时,我在logcat中看到“无法找到类错误”,当它前进到包含对“common”项目中类的引用的Activity时。单步执行到引用“common”项目中的类的位置会导致抛出ClassNotFoundException。

如果我尝试将库的名称放在Android Manifest中,例如:

<uses-library android:name="com.johndarv.chatproj.common" />

我明白了:

Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
Please check logcat output for more details.
Launch canceled!

尝试安装时。

我有以下版本: Eclipse Standard SDK 2.0.0 Android SDK 22.3

Android项目是使用Android 4.2.2编译的。

任何帮助将不胜感激!如果我能提供更多有用的信息,请询问!

2 个答案:

答案 0 :(得分:1)

uses-library标记表示您的应用期望该库在系统上可用。这是为了防止在没有安装某些预期的第三方软件的设备上安装。考虑手机制造商为他的设备提供一些特定的api。 所以这不是你的情况。这一次忘了这个标签。

至于你的问题。 jar不会导出到apk中。 确保在项目设置&gt; Java构建路径&gt;检查要导出库jar的Order和Export。

如果你将一个jar放入android项目的/ libs目录中,它会自动添加到构建路径中。您不需要手动执行此操作(就像您一样)。然后你可以在Project Settings&gt;下的Android Libraries条目下看到它(这个jar)。 Java构建路径&gt;库。此条目还在“订单和导出”选项卡中检查为导出(默认情况下在android项目中)。

也许你的问题发生的原因是jar实际上被导出了两次(一次手动导出,一次导出为私有库)。只需从构建路径中删除手动添加的条目。你会添加一次 - 但说实话,我不认为这会导致问题。但可以肯定的是,问题出在您的项目设置中。也许用Java Build Path&gt;粘贴屏幕截图;订单和导出以及Java构建路径&gt;库。

答案 1 :(得分:1)

我设法通过删除公共项目然后创建一个设置为Java SE 1.6的“使用执行环境”的新Java项目来解决这个问题。并重写(复制粘贴)旧类。

我以前的项目肯定有问题,看起来它是用于编译的Java版本。我曾尝试在旧项目中将合规性版本设置为1.6。在任何情况下,创建一个全新的1.6项目,粘贴类,重新导出和复制到我的Android项目都可以解决问题。

感谢所有试图回答此问题的人。希望有人发现上述有用的一天!