我有两个项目 - 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?
请帮助..提前致谢!
答案 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容器的可部署文件。