java.lang.NullPointerException:Inflater已在InputStreamReader上关闭

时间:2011-01-14 21:13:31

标签: java jar inputstream

我有以下问题:

当我从项目中加载资源时,一切正常,但当我把它放在.jar上并尝试加载时,我得到一个异常。

代码是:

InputStreamReader reader =
    new InputStreamReader(
        this.getClass().getResource(fileName).openStream())  
CsvReader stream = new CsvReader(reader);  
try {  
    while (stream.readRecord()) {  
        line = stream.getRawRecord();  
        //DO SOMETHING...  
    }  
}catch (Exception e) {  
    System.err.println(e.getMessage());  
    e.printStackTrace();  
} finally {  
    stream.close();  
}

stackTrace是:

    Inflater has been closed java.lang.NullPointerException: Inflater has been closed
 at java.util.zip.Inflater.ensureOpen(Inflater.java:364)
 at java.util.zip.Inflater.inflate(Inflater.java:237)
 at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:135)
 at java.io.FilterInputStream.read(FilterInputStream.java:116)
 at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
 at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
 at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
 at java.io.InputStreamReader.read(InputStreamReader.java:167)
 at utils.csvreader.CsvReader.checkDataLength(CsvReader.java:1198)
 at utils.csvreader.CsvReader.readRecord(CsvReader.java:604)

问题发生在stream.getRawRecord()上。我还尝试使用BufferedReader在readLine();

上获得相同的结果

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这可能是Java中的错误。我遇到了类似的问题,如下所述:https://issues.apache.org/jira/browse/FELIX-1032

您的应用程序是否运行了一些特殊的类加载器设置?

答案 1 :(得分:-1)

从项目加载资源意味着你不处理zip(jar是zip),所以InputStreamReader解析为你想要阅读的文件。

我的猜测是,当处理jar时,InputStreamReader解析为null或错误的文件。记录变量