excel报表开发工具FineReport之weblogic报错
1、报错1
java.lang.NoClassDefFoundError: com/sun/xml/stream/XMLReaderImpl
报错类:%weblogic_home%/bea/modules目录下的glassfish.jaxws.sjsxp_2.0.1.jar。
2、报错2
Weblogic8.1部署WebReport工程时的报错:
Error 500--Internal Server Error
java.lang.NoSuchMethodError: javax.xml.namespace.QName.getPrefix()Ljava/lang/String;
at com.sun.xml.stream.events.XMLEventAllocatorImpl.fillAttributes(XMLEventAllocatorImpl.java:186)
at com.sun.xml.stream.events.XMLEventAllocatorImpl.getXMLEvent(XMLEventAllocatorImpl.java:78)
at com.sun.xml.stream.events.XMLEventAllocatorImpl.allocate(XMLEventAllocatorImpl.java:54)
at com.sun.xml.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:87)
at com.fr.base.xml.XMLableReader.readXMLObject(XMLableReader.java:237)
at com.fr.report.io.core.IOHelper.generateTemplate(IOHelper.java:276)
at com.fr.report.io.TemplateImporter.generate(TemplateImporter.java:16)
at com.fr.web.core.SessionIDInfor$EmbeddedTpl.gen(SessionIDInfor.java:1568)
at com.fr.web.core.SessionDealWith.generateSessionID(SessionDealWith.java:214)
at com.fr.web.core.ReportletDealWith.dealWithReportlet(ReportletDealWith.java:35)
at com.fr.web.core.ReportDispatcher.checkAppServerConfig(ReportDispatcher.java:1183)
at com.fr.web.core.ReportDispatcher.dealWithRequest(ReportDispatcher.java:285)
at com.fr.web.ReportServlet.doGet(ReportServlet.java:169)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
报错类:jaxrpc.jar。
3、报错3
weblogic9部署WebReport工程时的报错:
[Fatal Error] :-1:-1: Premature end of file.
Aug 16, 2011 2:49:55 PM com.fr.base.FRContext getScheduleManager
WARNING: XML??????
com.fr.web.ReportletException: XML??????
at com.fr.base.core.BaseCoreUtils.parseXML(Unknown Source)
at com.fr.base.core.BaseCoreUtils.parseXML(Unknown Source)
at com.fr.base.XMLFileManager.readInputStreamXML(Unknown Source)
at com.fr.base.FRContext.getScheduleManager(Unknown Source)
at com.fr.web.ReportServlet.init(Unknown Source)
at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(St
ubSecurityHelper.java:278)
4、报错4
weblogic10.0.3或weblogic10.3.1部署WebReport工程时的报错:
java.lang.ClassCastException: com.sun.xml.stream.ZephyrParserFactory cannot be cast to javax.xml.stream.XMLInputFactory
报错类:fr-third-xx.jar
1、这一类报错是由于类重用导致即类冲突,因为FineReport使用了一些第三方的插件跟weblogic里面的插件相同,但是插件版本不同(不同版本间方法的个数与实现可能不同),相同的插件只会加载一个版本,而weblogic会优先加载weblogic自身的类,如果加载了weblogic中使用的版本,当报表端使用到该第三方插件时就可能会因为找不到某些类而报如上的错误。
1、解决的主要思想就是修改加载顺序,使之优先加载FineReport中的类,即使正确的jar包先于weblogic.jar加载,在%/WebReport%/WEB-INF文件夹下新建weblogic.xml配置文件,让服务器优先调用报表工程下的jar包,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>