Java 从战争中撤军

Java 从战争中撤军,java,log4j,classloader,war,jboss5.x,Java,Log4j,Classloader,War,Jboss5.x,当我在Jboss 5.1中部署war文件时,我得到: ERROR [STDERR] log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.log4j.Appender" variable. ERROR [STDERR] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by ER

当我在Jboss 5.1中部署war文件时,我得到:

 ERROR [STDERR] log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
 ERROR [STDERR] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
 ERROR [STDERR] log4j:ERROR [BaseClassLoader@18c1f7d{vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/OnlineUsage.war/}] whereas object of type
 ERROR [STDERR] log4j:ERROR "org.jboss.logging.appender.FileAppender" was loaded by [org.jboss.bootstrap.NoAnnotationURLClassLoader@291aff].
 ERROR [STDERR] log4j:ERROR Could not instantiate appender named "FILE".
即使有上述错误,我也可以正确地点击?wsdl URL

接下来,我尝试简单地从war中删除log4jjar文件,并成功部署,没有任何错误。明白了吗?我也是

我的问题是,这是否会在生产或实时(实时错误或绑定错误)中产生问题


在过去,我遇到一个错误,创建SAX解析器失败。如果从war中删除jar不是一个问题,那么我也可以删除XercesImpl jar吗?因为Jboss有自己的jar文件,所以我可以避免类强制转换异常

为了避免类强制转换异常,我强烈建议不要在WEB-INF/lib文件夹中打包任何JBoss或JDK提供的JAR。如果您出于某种原因不得不这样做,那么可以使用
jboss classloading.xml
文件中的类加载隔离

这一原则同样适用于其他JavaEE容器(Websphere、Weblogic、GlassFish等)。您永远不希望将JDK和容器提供的库打包到您自己的工件中


您可以使用这是一个很棒的开源工具,找出哪些依赖项不应打包到WAR/EAR中。

谢谢您的回答。我也使用了jboss-classloading.xml。但是没有用。最后,我决定将WEB-INF/lib中的jar文件移动到外部lib中,而外部lib没有打包在WAR中。这将是生产中的问题。如果在执行代码时jar不存在该怎么办。它会出现在jboss lib文件夹中。顺序是什么。它将如何找到这个罐子。首先是WEB-ING lib,然后是Jboss/lib,如果我是对的话?@user16651-如果Jboss已经提供了jar(Jboss as/lib,或者Jboss as/$server_profile/lib,等等),那么您的WAR将在运行时发现这些类很好。