java.lang.IllegalAccessError: superclass access check failed: class org.apache.poi.openxml4j.util.ZipSecureFile

Viewed 1323

I tried to read and write excel files using org.apache.poi. I get the following exception when I try to access an xlsx file using XSSFWorkBook

Exception in thread "main" java.lang.IllegalAccessError: superclass access check failed: class org.apache.poi.openxml4j.util.ZipSecureFile (in module org.apache.poi.ooxml) cannot access class org.apache.commons.compress.archivers.zip.ZipFile (in unnamed module @0xdd3b207) because module org.apache.poi.ooxml does not read unnamed module @0xdd3b207
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:183)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:784)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:705)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:630)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at org.apache.poi.ooxml/org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:312)
    at org.apache.poi.ooxml/org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:47)
    at org.apache.poi.ooxml/org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:299)

I have the following dependencies in my pom.xml

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.0.0</version>
</dependency>

This is the code where I get the exception

FileInputStream companyfileIS = new FileInputStream(companyfilePath);
        // OPCPackage pkg = OPCPackage.open(companyfilePath);

XSSFWorkbook companyFilewb = new XSSFWorkbook(companyfileIS);

I have no problems in using HSSFWorkbook for xls files though.

What am I missing?

4 Answers

Will be assuming you are using JPMS. Poi form version 5 has full support for JPMS.

Add this to your module-info.java

   requires org.apache.poi.poi;
   requires org.apache.poi.ooxml;

Another common reason is running "mvn package" from command line while eclipse is monitoring the project causing recompile and some weird inconstant issues.

I had this error in one of my apps too. I solved it by converting the library that uses poi directly to JPMS.

So in my case it seemed to be a transitive dependency issue with "commons-compress" in poi when calling XSSFWorkbook from a non-modular project.

Related