0

Project1 と Project2 の 2 つのプロジェクトがあります。Project1 には、すべての Java クラスが含まれています。project2 には、project1 で必要なすべての jar ファイルが含まれています。つまり、Project1 は Project1 に依存します (jar の場合)。

Glassfishサーバーを使用しています。Project1 の war ファイルを作成するときに、project2 のすべての jar ファイルを含めました。

例:
Project2 には、POI と Web サービスの 2 つのパッケージが含まれます。
POI パッケージの内容:
poi-examples-3.6-20091214.jar、
poi-contrib-3.6-20091214.jar、
poi-ooxml-3.6-20091214.jar、
poi-ooxml-schemas-3.6-20091214.jar、
poi-scratchpad- 3.6-20091214.jar。

web-services パッケージの内容:
javax.servlet-3.0.jar、
javax.servlet-api.jar、
jersey-bundle-1.10.jar、
jersey-client-1.12.jar、
jersey-core-1.12.jar、
jersey-multipart- 1.4.jar。

コマンド プロンプトから Project1 の war ファイルを作成するために、次のコマンドを使用しました。

jar cvf Project1.war D:\JavaProject\Project2\lib\external\poi\poi-examples-3.6-20091214.jar D:\JavaProject\Project2\lib\external\poi\poi-contrib-3.6-20091214.jar D:\JavaProject\Project2\lib\external\poi\poi-ooxml-3.6-20091214.jar D:\JavaProject\Project2\lib\external\poi\poi-ooxml-schemas-3.6-20091214.jar D:\JavaProject\Project2\lib\external\poi\poi-scratchpad-3.6-20091214.jar D:\JavaProject\Project2\lib\external\web-services\javax.servlet-3.0.jar D:\JavaProject\Project2\lib\external\web-services\javax.servlet-api.jar D:\JavaProject\Project2\lib\external\web-services\jersey-bundle-1.10.jar D:\JavaProject\Project2\lib\external\web-services\jersey-client-1.12.jar D:\JavaProject\Project2\lib\external\web-services\jersey-core-1.12.jar D:\JavaProject\Project2\lib\external\web-services\jersey-multipart-1.4.jar 

現在のディレクトリに作成された Project1.war ファイル。しかし、Project1.war を Glassfish サーバーにデプロイしようとすると、次のエラーが発生しました。

C:\glassfish3\glassfish\domains\domain1\applications\Project1\D:\JavaProject\Project2\lib\external\poi\poi-contrib-3.6-20091214.jar

(C:\glassfish3\glassfish\domains\domain1\applications\ は、デプロイ後に「.war」ファイルがコピーされるディレクトリです)

私は問題を理解できませんでした。warファイルを作成するために実行したコマンドに何か問題がありますか? コマンド ライン プロンプトを使用して war ファイルを作成するときに、外部 jar はどのように含まれますか?

助けてください..よろしくお願いします!

4

2 に答える 2

1

WAR ファイルには特定のファイル構造が必要です。

/   
    META-INF/
    WEB-INF/
        classes/
             classes and other classpath resources go here
        lib/
             jar files go here
        web.xml
    other webapp stuff; e.g. HTML, JSPs, CSS ...

JAR ファイルにランダムに何かを投げ込むだけでは、webapp コンテナーによってアンパックされたときに webapp として認識されません。

于 2013-04-25T12:29:24.763 に答える
0

WAR 展開レイアウトを使用する必要があります。つまり、project2 を $PROJECT1_DEPLOYMENT_DIR/WEB-INF/lib などに含める必要があります。次に、jar コマンドを実行すると、Glassfish またはその他のサーブレット コンテナーにデプロイ可能なファイルが生成されます。

于 2013-04-25T12:25:32.690 に答える