2015-01-27 26 views
5

Tôi đang cố tạo Excel bằng cách sử dụng API Xssf vì dấu vết bộ nhớ của nó nhỏ. Nó hoạt động tốt trong máy cục bộ của tôi có jdk1.7. Nhưng khi tôi cố gắng chạy nó trên UNIX, nơi phiên bản java là 1.6.0_75 nó mang lại cho tôi lỗi sau.java.lang.NoClassDefFoundError: Không thể khởi tạo lớp org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller

java.lang.NoClassDefFoundError: Could not initialize class org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller

Tôi đã sau lọ trong classpath của tôi

  • poi-3.11-20141221.jar
  • poi-excelant-3.11-20141221.jar
  • poi-OOXML-3.11- 20141221.jar
  • poi-ooxml-schemas-3.11-20141221.jar
  • xmlbeans-2.6.0.jar
  • xercesImpl.jar

Tôi đã xác minh rằng poi-3.11-20141221.jar có lớp ZipPackagePropertiesMarshaller.

Dường như một số bình bị thiếu. Tôi có thiếu gì đó không?

Trả lời

4

Tôi đã tìm được giải pháp cho vấn đề của riêng mình. Tôi đã thay thế poi-3.11-20141221.jar bằng poi-ooxml-3.9.jar. Điều đó hiệu quả.

+0

đây là một phao cứu sinh cho tôi, cảm ơn! – smuggledPancakes

0

Phiên bản Java 1.6.0_75 không tồn tại, tôi cho rằng bạn mắc lỗi đánh máy. Bản cập nhật cuối cùng của Java 6 là bản cập nhật 45 (6u45).

Lớp ZipPackagePropertiesMarshaller được tải tại thời gian chạy cho chắc chắn. Ngoại lệ NoClassDefFoundError xảy ra trong giai đoạn khởi tạo; nếu ngoại lệ đã là ClassNotFoundException, nó sẽ khác ...

Lớp ZipPackagePropertiesMarshaller không thay đổi giữa các phiên bản 3.11 và 3.9, nhưng lớp PackagePropertiesMarshaller được mở rộng bởi ZipPackagePropertiesMarshaller được thay đổi: thay đổi chính liên quan đến việc sử dụng của StAX trong phiên bản mới hơn.

Phân phối của StAX đi kèm với Java 6, nhưng phiên bản Java 6 cập nhật 18 (http://www.oracle.com/technetwork/java/javase/6u18-142093.html) giới thiệu phiên bản API StAX 1.2.

Cân nhắc sử dụng Java 6u18 trở lên. Điều này sẽ giải quyết vấn đề của bạn.

Trong Câu hỏi thường gặp chính thức, có một số chỉ dẫn về một vấn đề tương tự: https://poi.apache.org/faq.html#faq-N1017E.

Hơn nữa, giải pháp thay thế bạn tìm thấy không phải là giải pháp tốt nhất, hãy xem Câu hỏi thường gặp cuối cùng về POI.

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