2015-10-29 36 views
9

Tôi biết câu hỏi này đã được hỏi thường xuyên, nhưng không thể tìm thấy giải pháp phù hợp. Khi làm việc vớiLỗi phân tích cú pháp POI Apache

XWPFDocument xdoc = new XWPFDocument(srcFile); 

hoặc

XSSFWorkbook workbook = new XSSFWorkbook(srcFile); 

tôi luôn luôn kết thúc với các lỗi sau:

Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.apache.poi.util.POILogger.log(ILjava/lang/Object;)V from class org.apache.poi.openxml4j.opc.PackageRelationshipCollection 
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.parseRelationshipsPart(PackageRelationshipCollection.java:313) 
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:163) 
    at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:131) 
    at org.apache.poi.openxml4j.opc.PackagePart.loadRelationships(PackagePart.java:561) 
    at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:109) 
    at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:80) 
    at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:125) 
    at org.apache.poi.openxml4j.opc.ZipPackagePart.<init>(ZipPackagePart.java:78) 
    at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:243) 
    at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:684) 
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:275) 
    at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) 
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:266) 

dân đã gợi ý để mở PackageRelationshipCollection và thử lại. Nhưng điều đó không giúp được gì nhiều.

Ngoài ra tôi đã lọ nạp:

<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>3.13</version> 
    <type>jar</type> 
</dependency> 
<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-scratchpad</artifactId> 
    <version>3.13</version> 
    <type>jar</type> 
</dependency> 
<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml</artifactId> 
    <version>3.12</version> 
    <type>jar</type> 
</dependency> 
<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml-schemas</artifactId> 
    <version>3.11</version> 
    <type>jar</type> 
</dependency> 

Trả lời

32

Từ Apache POI FAQ:

Can I mix POI jars from different versions?

No. This is not supported.

All POI jars in use must come from the same version. A combination such as poi-3.11.jar and poi-ooxml-3.9.jar is not supported, and will fail to work in unpredictable ways.

pom của bạn có phụ thuộc vào lọ Apache POI từ 3.11, 3.12 và 3.13, mà như the FAQ explained isn't supported

Bạn cần thay đổi tất cả những thứ đó là 3,13, sau đó nó sẽ hoạt động

Tôi muốn đề xuất một cái gì đó như:

<properties> 
    <poi.version>3.13</poi.version> 
</properties> 
<dependencies> 
    <dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>${poi.version}</version> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-scratchpad</artifactId> 
    <version>${poi.version}</version> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml</artifactId> 
    <version>${poi.version}</version> 
    </dependency> 
    <!-- etc as needed --> 

Bằng cách đó, bạn có thể đảm bảo tất cả các bình POI của bạn là từ cùng một phiên bản!

+0

Cảm ơn sự giúp đỡ. Điều đó đã làm các trick. – beingsuplab

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