Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Weblogic11g上的Apache FOP ClassNotFoundException/ClassCircularityError_Spring_Weblogic_Classloader_Apache Fop - Fatal编程技术网

Spring Weblogic11g上的Apache FOP ClassNotFoundException/ClassCircularityError

Spring Weblogic11g上的Apache FOP ClassNotFoundException/ClassCircularityError,spring,weblogic,classloader,apache-fop,Spring,Weblogic,Classloader,Apache Fop,我正在使用ApacheFop1.1 在EJB3和spring3.0.6web应用程序中。 守则: FopFactory FopFactory=FopFactory.newInstance() 驻留在我的类中(由Spring MVC转换器调用)。 如果此代码在方法(类级别)之外,我会得到java.lang.ClassNotFoundException异常,java.lang.ClassCircularyError异常是这一行在方法内部 请参见下面的课程: @组成部分 公共类PdfReport扩展

我正在使用ApacheFop1.1 在EJB3和spring3.0.6web应用程序中。 守则:

FopFactory FopFactory=FopFactory.newInstance()

驻留在我的类中(由Spring MVC转换器调用)。 如果此代码在方法(类级别)之外,我会得到java.lang.ClassNotFoundException异常,java.lang.ClassCircularyError异常是这一行在方法内部

请参见下面的课程:


@组成部分
公共类PdfReport扩展BaseReportImpl实现IPdfReport{

@Override
public void createReport(OutputStream out, ResponseData responseData) throws IOException {
    try {
        //Construct a FopFactory
        FopFactory fopFactory = FopFactory.newInstance();

        //Construct fop with desired output format
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);

        //Setup JAXP using identity transformer
        TransformerFactory factory = TransformerFactory.newInstance();
        //identity transformer
        Transformer transformer = factory.newTransformer();

        //Setup input stream
        Source src = new StreamSource(new File("/resources/detailsReport.fo"));

        //Resulting SAX events (the generated FO) must be piped through to FOP
        Result res = new SAXResult(fop.getDefaultHandler());

        //Start XSLT transformation and FOP processing
        transformer.transform(src, res);

    } catch (FOPException e) {
        throw new RuntimeException("Failed creating PDF report: " + e.getMessage(), e);
    } catch (TransformerConfigurationException e) {
        throw new RuntimeException("Failed setting up transformer for PDF report: " + e.getMessage(), e);
    } catch (TransformerException e) {
        throw new RuntimeException("Failed transforming PDF report: " + e.getMessage(), e);
    } 
}    
}

但在这一点上,我有一个例外:


org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套的异常是java.lang.ClassCircularyError:org/apache/fop/apps/FOPException
位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:839)
位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
位于org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
位于weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
位于weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
位于weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
位于weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
位于weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
在utils.spring.UnloadFilterBean.doFilterInternal(UnloadFilterBean.java:58)
位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
位于org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
位于org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
位于weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
位于weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
位于weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
位于weblogic.servlet.internal.WebAppServletContext$servleinvocationAction.wrapRun(WebAppServletContext.java:3715)
在weblogic.servlet.internal.WebAppServletContext$servleinvocationAction.run(WebAppServletContext.java:3681)
位于weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
位于weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
位于weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
位于weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
位于weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
在weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
运行(ExecuteThread.java:176)
原因:java.lang.ClassCircularyError:org/apache/fop/apps/FOPException
位于proj.report.PdfReport.createReport(PdfReport.java:37)
在protocol.ResponseDataConverter.writeInternal(ResponseDataConverter.java:94)
在protocol.ResponseDataConverter.writeInternal(ResponseDataConverter.java:1)
位于org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:181)
位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.writeWithMessageConverters(AnnotationMethodHandlerAdapter.java:996)
位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.HandlerResponseBody(AnnotationMethodHandlerAdapter.java:954)
位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.getModelAndView(AnnotationMethodHandlerAdapter.java:903)
位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:438)
位于org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
... 26多

请帮忙

添加: 如果我移动
FopFactory FopFactory=FopFactory.newInstance()在createReport()方法之外,我得到一个异常:


java.lang.ClassNotFoundException:org.apache.fop.apps.FopFactory
在weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
在weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
在weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:303)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:248)
位于weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
在weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
位于java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
... 86多

解决方案是在eclipse文件org.eclipse.wst.common.component中添加FOP JAR以创建分解的EAR文件