我试图在我的Java应用程序中实现Apache commons-compress时遇到错误:
java.lang.ClassNotFoundException:org.apache.commons.compress.archivers.ArchiveEntry“
我有this post中描述的完全相同的问题,除了我没有使用Bukkit(无论是什么)。 [expletive] OP留下了令人愤怒的最后一篇文章,“无论如何,我找到了一个解决方案。案件已关闭!”而不是分享解决方案,所以我不知道他做了什么来解决它。
我没有使用ArchiveEntry,而是使用TarArchiveEntry,我假设它导入了ArchiveEntry。即使我导入了所谓的缺失类,Eclipse也会警告未使用的导入。奇怪的是,如果我删除了我的TarArchiveEntry导入,警告会消失,但是包含对TarArchiveEntry错误的引用的行。
我以前从未遇到过这个问题。似乎TarArchiveEntry类包含错误并且无法导入ArchiveEntry,但是我看不到广泛使用的库,例如包含这种基本错误的apache commons。
我的暗示有什么问题吗?
答案 0 :(得分:3)
您的CLASSPATH存在问题。您需要将其设置为包含包含该类的库。它似乎包含在commons-compress中,这意味着你应该有一个名为commons-compress.jar或类似文件的文件,确保它在你的类路径中。
答案 1 :(得分:1)
我的类路径确实存在问题。在我的项目目录中,我将以下行添加到.classpath文件中(它是隐藏的,所以仔细看看):
<classpathentry exported="true" kind="lib" path="/home/stockb/commons-compress-bin/commons-compress-1.4.1/commons-compress-1.4.1.jar"/>
添加此行后,我不再获得ClassNotFoundException。我不确定为什么这解决了这个问题,因为我正在使用我的.classpath文件中找不到的几个其他库(例如commons-fileupload-1.2.jar),因为它们不会抛出任何异常。
我现在的问题是,当我将jar添加到Eclipse中的buildpath时,为什么Eclipse没有修改此文件?另外,为什么我需要在我的.classpath文件中添加commons-compress,而不是commons-fileupload?