我的包模型是我在EAR中有两个war文件,所有常见的jar放在EAR / lib目录中。
我正在使用apache fop jar将一些输出打印成PDF格式。现在,当我尝试打印输出时,我得到了下面的例外
`
]] Root cause of ServletException.
java.lang.NoClassDefFoundError: org/apache/log4j/Category
at org.apache.avalon.framework.logger.Log4JLogger.info(Log4JLogger.java:73)
at org.apache.fop.fo.FOTreeBuilder.startDocument(FOTreeBuilder.java:239)
om.sun.org.apache.xml.internal.serializer.ToSAXHandler.startDocumentInternal(ToSAXHandler.java:95)
at com.sun.org.apache.xml.internal.serializer.SerializerBase.startDocument(SerializerBase.java:1216)
at GregorSamsa.transform()
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException: org.apache.log4j.Category
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:280)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:253)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:177)
Truncated. see log file for complete stacktrace`
不确定为什么它会发生,因为fop.jar是特定战争的一部分,我也尝试将log4j.jar放在specfici战争中,但没有帮助。
答案 0 :(得分:1)
我怀疑这是一个类加载器问题。虽然您没有指定正在使用的应用服务器,但无论哪一个,都需要确保jar可用于加载应用程序的类加载器。检查您的耳朵类加载器和相关策略的设置。
答案 1 :(得分:1)
我最终让它发挥作用。
实际上fop.jar依赖于avalonXX.jar,它不是战争的一部分,而是耳中常见jar文件夹的一部分。我将jar文件移动到war lib目录和VOILA ...感谢评论