在实时部署期间在哪里添加罐子?

时间:2016-09-29 05:10:09

标签: eclipse jboss noclassdeffounderror

我无法确定是否必须将特定于项目的库jar添加到服务器配置文件夹(在我的情况下为jboss服务器)或应用程序ear(在WEB_INF / lib内)或者在两者内部。 / p>

最近我尝试在实时jboss服务器中部署一个耳朵。并继续收到以下错误。

  

ERROR   [org.apache.catalina.core.ContainerBase [jboss.web] [缺省主机]。[/ iportalweb]。[RBXLoginServlet]]   (http- / 192.168.150.3:10041-4)JBWEB000236:Servlet.service()for   servlet RBXLoginServlet抛出异常:   java.lang.NoClassDefFoundError:无法初始化类   org.jboss.logmanager.MDC           在org.apache.log4j.MDC.remove(MDC.java:23)[log4j-jboss-logmanager-1.1.0.Final-redhat-2.jar:1.1.0.Final-redhat-2]           在com.orbidirect.aps.common.Log4jMDCInitializer.removeFromMDC(Log4jMDCInitializer.java:54)   [iRetailLib.jar:]           在com.polaris.iportal.ws.filters.LogInitializationFilter.doFilter(LogInitializationFilter.java:120)   [类:]           在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在com.polaris.canvas.filters.DeviceDetectFilter.doFilter(DeviceDetectFilter.java:94)   [CTRenderLib.jar:]           在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在com.polaris.canvas.filters.DeviceDetectFilter.doFilter(DeviceDetectFilter.java:94)   [CTRenderLib.jar:]           在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)   [JBoss的-AS-web的7.4.3.Final-红帽-2.jar:7.4.3.Final-红帽-2]           在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:653)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:926)   [jbossweb-7.4.10.Final-红帽-1.jar:7.4.10.Final-红帽-1]           在java.lang.Thread.run(Thread.java:745)[rt.jar:1.8.0_91]

我知道使用eclipse你总是可以将jar添加到项目部署程序集并在本地运行它。但是如果服务器库有相同的罐子会有问题吗?

1 个答案:

答案 0 :(得分:0)

通常将jar库放在ear的lib目录或war的lib目录中,具体取决于打包应用程序的方式。这是部署库jar的最常用方法。

如果您计划在多个应用程序(例如,数据库驱动程序)上使用相同的jar,则可以为此jar声明一个jboss模块,然后通过MANIFEST.MF文件声明对需要此jar的应用程序的依赖性

部署jboss已经拥有的jar不是一个好主意,因为你可能有版本冲突..如果你使用的是maven,你可以按照提供的方式声明这些依赖项,这样它们就不会被复制到你的应用程序中lib文件夹。