在加载属性文件时:其中下划线上的代码就是写法上的区别            java.io.InputStream in=context.getResourceAsStream("WEB-INF/messageresource.properties");
            ps.load(in);
            java.io.InputStream in_ch=context.getResourceAsStream("/WEB-INF/messageresource_ch.properties");
            
            ps_ch.load(in_ch);这么写就好使啦!
但是为什么这么写:            InputStream in=(InputStream) context.getResourceAsStream("/WEB-INF/messageresource.properties");
            ps.load(in);
            InputStream in_ch=(InputStream) context.getResourceAsStream("/WEB-INF/messageresource_ch.properties");
            
            ps_ch.load(in_ch);
它就报一下错误呢?
null
java.lang.ClassCastException
    at com.tag.DispatcherServlet.init(DispatcherServlet.java:85)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:887)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3850)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4122)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:866)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:850)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:614)
    at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:315)
    at org.apache.catalina.core.StandardHost.install(StandardHost.java:835)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:723)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:473)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1002)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:393)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:792)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1125)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:502)
    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:2343)
    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:324)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:392)有经验的朋友帮忙看下,解释解释下,谢谢! 

解决方案 »

  1.   

    最原始的帖子在http://www.javaresearch.org/article/60827.htm上面,有空的朋友帮助看下,谢谢啦!
      

  2.   

    cast错误?null是什么?你打上去的还是报出来的
    你最好能把出错在那行也标注一下。错误没有全打出来很难说。
    还有第二种方法里面InputStream是不是java.io.InputStream呢?看看import是不是正确。
    BTW: InputStream in=(InputStream) context.getResourceAsStream("/WEB-这里的“/”去掉后怎么样?
      

  3.   

    怎么会cast异常呢你是不是把别的InputStream改成java.io.InputStream了
      

  4.   

    getResourceAsStream("/WEB
                         ^是因为你这里加了个"/"吧....
    路径不对了....
      

  5.   

    cast异常是否是把别的InputStream改成java.io.InputStream了?
      

  6.   

    会不会是有2个jar包你都含有InputStream接口,而产生了冲突!
      

  7.   

    应该是你的import 包有两个包含了inputstream 这个类,导致冲突。