使用命令提示符创建包含外部jar的war文件

时间:2013-04-25 12:09:56

标签: java glassfish-3

我有两个项目 - Project1和Project2。 Project1包含所有java类。 project2包含project1中所需的所有jar文件。手段,Project1依赖于Project1(用于罐子)。

我正在使用Glassfish服务器。在创建Project1的war文件时,我包含了project2中的所有jar文件。

示例:
Project2包含2个包 - POI和Web服务 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文件。 但是,当我尝试在Glassfish服务器上部署Project1.war时,我遇到了这个错误:

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?

请帮助..提前致谢!

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

您应该使用WAR exploded layout,换句话说,project2应该包含在$ PROJECT1_DEPLOYMENT_DIR / WEB-INF / lib中,依此类推。然后你的jar命令将导致Glassfish或任何其他servlet容器的可部署文件。