如何解决java.lang.IllegalAccessError:超类访问检查失败:类 org.apache.poi.openxml4j.util.ZipSecureFile
我尝试使用 org.apache.poi 读取和写入 excel 文件。当我尝试使用 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)
我的 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>
这是我得到异常的代码
FileInputStream companyfileIS = new FileInputStream(companyfilePath);
// OPCPackage pkg = OPCPackage.open(companyfilePath);
XSSFWorkbook companyFilewb = new XSSFWorkbook(companyfileIS);
不过,我对 xls 文件使用 hssfWorkbook
没有问题。
我错过了什么?
解决方法
假设您使用的是 JPMS。 Poi 表单版本 5 完全支持 JPMS。
将此添加到您的 module-info.java
requires org.apache.poi.poi;
requires org.apache.poi.ooxml;
另一个常见的原因是在 eclipse 监控项目时从命令行运行“mvn package”,导致重新编译和一些奇怪的不稳定问题。
,从堆栈跟踪看起来您可能正在使用 OpenJ9。如果是这样,在最新版本中,他们修复了类似的错误。你可以尝试更新它吗?
信息:https://github.com/eclipse/openj9/issues/11274
,此 Maven 项目展示了 Apache POI 5.0.0 和 JPMS 的工作示例。检查模块信息和 pom.xml 的重要部分。 -> https://github.com/seinecle/ApachePoi5.0.0-and-JPMS
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。