2

JavaアプリケーションにApachecommons-compressを実装しようとするとエラーが発生しました。

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

Bukkitを使用していないことを除いて、この投稿で説明されているのとまったく同じ問題があります(それが何であれ)。[罵倒]OPは、「とにかく、解決策を見つけました。ケースはクローズされました!」という腹立たしい最後の投稿を残しました。解決策を共有する代わりに、彼がそれを解決するために何をしたのか私にはわかりません。

私はArchiveEntryを使用していませんが、ArchiveEntryをインポートすると想定しているTarArchiveEntryを使用しています。おそらく欠落しているクラスをインポートしても、Eclipseは未使用のインポートについて警告します。不思議なことに、TarArchiveEntryのインポートを削除すると、警告は表示されなくなりますが、TarArchiveEntryへの参照を含む行にエラーが発生します。

私はこれまでこの問題を経験したことがありません。TarArchiveEntryクラスにエラーが含まれていて、ArchiveEntryのインポートに失敗しているように見えますが、このような初歩的エラーを含むapachecommonsなどの広く使用されているライブラリは表示されません。

私の含意に何か問題がありますか?

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など)を使用しているため、これで問題が解決した理由はわかりません。

私の質問は、Eclipse 内のビルドパスに jar を追加したときに、Eclipse がこのファイルを変更しなかったのはなぜですか? また、commons-compress を追加する必要があるのに、commons-fileupload を .classpath ファイルに追加しないのはなぜですか?

于 2012-07-03T13:58:01.810 に答える