0

Eclipse (Windows 7) で動的 Web プロジェクトを作成しました。私のクラスでは、多くの外部ライブラリを使用しています。これらはWebContent/WEB-INF/lib/手動でディレクトリにコピーされ、ビルド時に生成される WAR ファイルに含まれます (右クリック/エクスポート/...)。WAR ファイルは、Ubuntu サーバーで実行されている Tomcat 6 にデプロイされます。

私の質問は、実行時に使用するパッケージをWARファイルに「伝える」ことができるかどうかです。パラメータを追加してビルドコマンドを手動で実行することでしょうか?それとも、これはファイルがコピーされた間違ったディレクトリですか?

私は次のことを試しました: すべての外部 JAR が にコピーされ$JAVA_HOME/jre/lib/extたので、クラスパスに自動的に表示されるはずです。WAR ファイルをエクスポートしてデプロイする前に、 内のすべての JAR を削除しましたWebContent/WEB-INF/lib/。しかし、その結果、ClassNotFoundサーバー側で例外が発生します。

4

2 に答える 2

1

war を使用する場合、一般的な考え方は、ホスト環境を変更することなく、Tomcat の任意のインスタンスに展開できる war を作成することです。これは、許可、アクセス、必要な稼働時間などのために常に実行できるとは限りません。

とはいえ、アプリが依存するライブラリはすべて、WEB-INF/lib.

お気づきのように、jar を維持するのは面倒な場合があります。Maven や少なくとも Ant などのビルド ツールの使用を検討してください。

また、Java 環境の jar と、Tomcat で実行されているアプリにアクセスできる jar は、2 つの異なるセットです。Tomcat は、それ自体で実行されているアプリの基盤となる Java システムへのアクセスを許可しません。必要な jar を TOMCAT_HOME\lib に置くこともできますが、前述の理由から、これはあまりお勧めできません。

于 2013-11-08T14:19:31.160 に答える
0

ライブラリを除外するには、war タスクを使用できます

Eclipseプロジェクトを右クリックしてからエクスポートすることができると想像できます-> ant Buildfilesを選択します

上記のリンクからコードを追加します。この例のように、ケースバイケースで html、画像、出力クラス フォルダーなどを指定してください。

<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
  <fileset dir="src/html/myapp"/> 
  <fileset dir="src/jsp/myapp"/>
  <lib dir="thirdparty/libs">
    <exclude name="jdbc1.jar"/> // add more lib in your case
  </lib>
  <classes dir="build/main"/> // the class path would be ./build/classes
  <zipfileset dir="src/graphics/images/gifs"
              prefix="images"/>
</war>
于 2013-11-08T14:22:59.700 に答える