InputStream in = BatchProperties.class.getClassLoader().getResourceAsStream(propertyFileName);
在linux系统 jar中有这段代码
但打印出in为:java.util.zip.ZipFile$1@19da4fc
请高手说明一下
windows下开发时 运行正常。打印出in为:java.io.BufferedInputStream@1e9cb75

解决方案 »

  1.   

    问题是啥?没看懂你在生产环境下,资源文件被打包到JAR中去了,而JAR包就是用ZIP格式压缩的,所以得到的InputStream就是Zip的实现,很智能很好啊,有啥问题呢?
      

  2.   

    ZipFile这个类也不是一个IO流啊 怎么读取文件内容呢
      

  3.   

    比如Properties prop = new Properties();
    prop.load(in);
    prop.getProperty(key);
    这样也取不到文件内容啊
      

  4.   

    1.JDK的问题,InputStream 只是个接口。不是具体实现类
    2.你传递参数问题,WINDOWS下的路径和LINUX下的路径符不一样。
    标准情况下得到得结果就是你在WINDOWS下得到得结果一致,BUFFERDINPUTSTREAM,ZIPFILE肯定是错误的。你应该是想得到JAR包里面的一个配置文件的输入流。
      

  5.   

    想得到的就是配置文件的输入流 现在就是怀疑jdk有问题 无从下手啊
      

  6.   


    原来是纠结这个,大致是因为:ZipFile有一个方法叫做.getInputStream();
    而这个方法返回的类是ZipFileInputStream,而这个类是ZipFile的内部类。
    所以显示的时候看起来像是ZipFile。
    你这样吧: System.out.println(in.getClass()); 就真相大白了。
      

  7.   

    class java.util.zip.ZipFile$1  的确是内部类 但为什么取不到配置内容
      

  8.   


    你说的取不到配置内容,是指从in读不到任何东西么?还是其它问题?你尝试下直接自己写代码从in读取内容并输出,我认为不可能读取不到内容的。