缺省语义文件导致web应用启动报错解决方案

来源:互联网 发布:linux退不出vi 编辑:程序博客网 时间:2024/06/09 21:41

   我们在布署web发布包启动时,经常会遇到报 InputStream cannot be null 异常,但这个异常不影响报表的运行,即便如此,
每次启动时看着一堆stacktrace还是感觉很不舒服。

 

Stack Trace详情:


Report System initing......
[2011-11-30 12:00:23] runqianReportLogger : [INFO ]  - Set The Max Cells Num to 100000 , old value is -1
[2011-11-30 12:00:23] runqianReportLogger : [DEBUG]  - : InputStream cannot be null
错误来源:InputStream cannot be null
: InputStream cannot be null
错误来源:
InputStream cannot be null
 at com.runqian.report4.semantics.SemanticsManager.readXMLStream(Unknown Source:174)
 at com.runqian.report4.view.ReportServlet.loadConfig(Unknown Source:449)
 at com.runqian.report4.view.ReportServlet.loadConfig(Unknown Source:99)
 at com.runqian.report4.view.ReportServlet.init(Unknown Source:87)
 at com.runqian.util.webutil.SetContextServlet.init(SetContextServlet.java:23)
 at javax.servlet.GenericServlet.init(GenericServlet.java:212)
 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)
 at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:516)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.IllegalArgumentException: InputStream cannot be null
 at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:94)
 at com.runqian.report4.semantics.SemanticsManager.readXMLStream(Unknown Source:171)
 ... 31 more
Report System initialized......
[Wed Nov 30 12:00:24 CST 2011] : [INFO]  - DM System initing......
[Wed Nov 30 12:00:24 CST 2011] : [INFO]  - program license error:
授权文件错误
[Wed Nov 30 12:00:24 CST 2011] : [DEBUG]  - SOLAP RESERVED 0 is 0
[Wed Nov 30 12:00:24 CST 2011] : [DEBUG]  - SOLAP RESERVED 1 is 0
[Wed Nov 30 12:00:24 CST 2011] : [INFO]  - DM System initialized......


错误很明显,缺少语义层文件

 错误来源:InputStream cannot be null
 at com.runqian.report4.semantics.SemanticsManager.readXMLStream(Unknown Source:174)
 
找到了错误,解决方法就很简单了,指定正确的语义层文件即可。

 

打开 WEB-INF下面的 reportConfig.xml查找以下XML片断:

在发布报表时,如果没有选择主义层文件,润乾会自动为你生成一个 /WEB-INF/demo.xml的默认值,而这个文件根本不存在,
所以才会报 InputStream cannot be null的异常。
如果应用中有用到语义层文件,重新设置正确的文件路径,
如果没有用到,将此段代码注释或删除即可。

<config>
   <name>semanticsFile</name>
   <value>/WEB-INF/demo.xml</value>
</config>

重启应用,异常排除,控制台干净了。

原创粉丝点击