我有一个需求,我需要打包各种web服务的所有公共类,并将它们作为依赖项(以避免多个服务的重复)。EAR文件的结构如下:
META-INF/MANIFEST.MF META-INF/application.xml commons-codec-1.2.jar MyWebService1.war MyWebService2.war MyWebService1.jar MyWebService2.jar EJB\_Bean.jar
现在,我已经将依赖jar放在WAR文件的Manifest下面(不确定是否合适),
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.4
Created-By: 1.7.0_51-b13 (Oracle Corporation)
Class-Path: MyWebService1.jar在指定的结构中,当我尝试将EAR文件部署到WEB逻辑服务器时,我得到了java.lang.NoClassDefFoundError,,但是如果我将依赖WAR移动到WAR的WEB/lib文件夹下并重新打包EAR文件,那么部署就会像预期的一样好。
我是否可以将WAR文件依赖库包含在WAR文件之外,甚至在EAR文件之外都是我的问题。如有任何帮助或建议,将不胜感激。
发布于 2014-06-17 07:55:15
设置EAR包库的一种简单方法是在EAR根目录下创建一个lib文件夹,并将库放入其中。
在这种情况下,你的耳朵里会有这样的东西:
META-INF/MANIFEST.MF
META-INF/application.xml
MyWebService1.war
MyWebService2.war
lib/commons-codec-1.2.jar
lib/MyWebService1.jar
lib/MyWebService2.jar
EJB_Bean.jar发布于 2014-06-17 06:16:45
在tomcat中,jar文件可以放在lib目录中,这些jar文件可供部署在该服务器上的所有应用程序使用。在网络逻辑中,必须有类似的方法来实现它。web逻辑服务器加载所有jar文件的lib文件夹。
发布于 2014-06-17 06:16:57
我的第一个建议是使用某种类型的依赖管理,比如Maven、Gradle或常春藤 --自己做这件事非常困难,而且容易出错。
在您的情况下,一个更简单的解决方案是将您的“公共jars”(特别是在多个应用程序之间共享的情况下)添加到the服务器的共享库中。例如,Tomcat将加载放置在tomcat/ placed /lib目录下的所有librairies。
https://stackoverflow.com/questions/24256803
复制相似问题