0

概要

スタンドアロンJUnitテストの実行中にビルドパスに追加すると、サードパーティのjarファイルのクラスにアクセスできますが、動的Webプロジェクト内からプレーンオールドJavaオブジェクトを介してアクセスすると「 ClassNotFoundException 」になります。

  • 使用したIDE:Eclipse
  • Webサーバー:Apache 7

詳細

私のプロジェクトには、多くのサードパーティのjarファイル、つまりsqlite、eclipse jdt、jsoupが必要でした。私はこのプロジェクトをスタンドアロンプ​​ロジェクトとして作成しましたが、jarファイルのすべてのクラスに正常にアクセスできました。

しかし今、私は「src」フォルダ全体を「動的Webプロジェクト」にコピーしました。これらすべてのサードパーティのjarを含むフォルダ「jars」を作成し、次の手順に従って、これらすべてがビルドパスに追加されていることを確認します。

プロジェクトのプロパティ->Javaビルドパス->ライブラリ->jarの追加->jarフォルダからすべてのjarファイルを選択します。

Webプロジェクト内でスタンドアロンのJUnitテストを実行すると、これらのjarに正常にアクセスできます。このjunitテストは、決してサーバーを必要としないことに注意してください。

しかし、「サーバーで実行」しようとすると、すべてのサードパーティクラスで次のようなClassNotFoundExceptionが発生し続けます。

java.lang.ClassNotFoundException: org.sqlite.JDBC
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)

これは、アプリケーションがWeb上でどのようにデプロイされるかについての知識が不足していることと関係があると確信しています。

4

3 に答える 3

0

私は以前、EclipseとWebサーバーツールプロジェクトでこの問題に遭遇しました。プロジェクトで使用しているプラ​​グインを構成するために、.settingsファイルおよびその他のファイルを確認してください。Eclipseビューでいくつかのフィルターを削除する必要がある場合があります。WSTはビルドパスを異なる方法で構築するため、プロジェクトに含めたjarを使用していない可能性があります。

于 2010-11-12T22:03:39.973 に答える
0

ランタイム クラスパスは、ビルド クラスパスとは異なる場合があります。明示的な起動構成を作成します。デフォルトはビルド クラスパスから始まりますが、これらのサード パーティの jar を含めるには、手動で微調整する必要がある場合があります。

于 2010-11-11T19:21:01.547 に答える
0

私はそれを考え出した。すべての jar を WEB-INF/lib ディレクトリに配置する必要がありました。上記のjarを使用するようにEclipseに依頼したとき、Eclipseが必要なすべての設定を行うと思いました。しかし、うまく自動化されていないものがあると思います。

于 2010-11-13T22:40:25.690 に答える