2011-01-14 36 views
5

Tôi có vấn đề sau đây:java.lang.NullPointerException: Inflater đã bị đóng cửa On InputStreamReader

Khi tôi nạp nguồn từ dự án tất cả hoạt động tốt, nhưng khi tôi đặt nó trên một .jar và cố gắng tải Tôi nhận được một ngoại lệ.

Mã này là:

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(); 
} 

Và stacktrace là:

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) 

Vấn đề xảy ra trên stream.getRawRecord(). Tôi cũng đã thử với BufferedReader với cùng một kết quả trên readLine();

Bất kỳ ý tưởng nào?

+0

Bạn không đóng Trình đọc. – EJP

Trả lời

1

Điều này có thể là lỗi trong Java. Tôi gặp sự cố tương tự, được mô tả tại đây: https://issues.apache.org/jira/browse/FELIX-1032

Ứng dụng của bạn có đang chạy với một số cài đặt trình nạp lớp đặc biệt không?

+0

Không, im sử dụng cài đặt mặc định nhưng vấn đề trông giống như bạn đã gặp phải. – Yhonny

+0

Tôi không thể sửa chữa nó với cách giải quyết được đề xuất, tôi gọi một cách rõ ràng phương thức close() nhưng vấn đề xảy ra trong khi vẫn đọc tệp. – Yhonny

-1

tải tài nguyên từ dự án có nghĩa là bạn không xử lý zip (jar là zip), do đó InputStreamReader sẽ giải quyết tệp bạn muốn đọc.

Đoán của tôi là InputStreamReader phân giải thành tệp không đúng hoặc sai khi xử lý với jar. Đăng nhập vars để được asure

+0

Các tập tin bên trong de jar và đôi khi hoạt động tốt, tôi có nghĩa là, lần đầu tiên tôi cố gắng để đọc nó không thành công nhưng lần thứ hai nó hoạt động ok (một số lần ngay cả lần thứ hai không thành công). Nhưng gỡ lỗi tôi thấy rằng InputStreamReader mở tài nguyên ok tất cả các lần (không null). – Yhonny

+0

Nếu InputStreamReader là null, nó sẽ không xuất hiện trong ngăn xếp ngăn xếp. – EJP

Các vấn đề liên quan