1

我的包模型是我在一个 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 放在特定战争中,但没有帮助。

4

2 回答 2

1

我怀疑这是一个类加载器问题。虽然您没有指定您正在使用的应用程序服务器,但无论是哪一个,您都需要确保该 jar 可用于加载您的应用程序的类加载器。检查您耳朵的类加载器和相关策略的设置。

于 2013-07-02T10:23:36.790 回答
1

我终于让它工作了。

实际上 fop.jar 对 avalonXX.jar 有依赖关系,它不是战争的一部分,而是耳朵中公共 jar 文件夹的一部分。我将 jar 文件移到了 war lib 目录中,然后瞧……感谢您的评论

于 2013-07-02T11:31:07.103 回答