2

我在我的 Java 应用程序中尝试实现 Apache commons-compress 时遇到了一个错误:

java.lang.ClassNotFoundException: org.apache.commons.compress.archivers.ArchiveEntry"

我有这篇文章中描述的完全相同的问题,除了我没有使用 Bukkit(不管是什么)。[咒骂] OP 留下了令人气愤的最后一条帖子,“无论如何,我找到了解决方案。案件已结案!” 而不是分享解决方案,所以我不知道他做了什么来解决它。

我没有使用 ArchiveEntry,而是使用 TarArchiveEntry,我假设它导入 ArchiveEntry。即使我导入了所谓的缺失类,Eclipse 也会警告未使用的导入。奇怪的是,如果我删除我的 TarArchiveEntry 导入,警告就会消失,但包含对 TarArchiveEntry 错误的引用的行。

我以前从未遇到过这个问题。似乎 TarArchiveEntry 类包含错误并且无法导入 ArchiveEntry,但我看不到包含此类基本错误的广泛使用的库,例如 apache commons。

我的暗示有什么问题吗?

4

2 回答 2

3

你的 CLASSPATH 有问题。您需要将其设置为包含包含该类的库。它似乎包含在 commons-compress 中,这意味着您应该有一个名为 commons-compress.jar 或类似文件的文件,确保它在您的类路径中。

于 2012-06-29T17:33:03.733 回答
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 中的构建路径时,为什么 Eclipse 没有修改这个文件?另外,为什么我需要在我的 .classpath 文件中添加 commons-compress 而不是 commons-fileupload?

于 2012-07-03T13:58:01.810 回答