java - java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.sheetIterator()Ljava/util/Iterator;
问题描述
请我需要一些关于错误的帮助。我有一个带有以下 jar 文件的 javafx 项目
- fontawesome-fx-8.1.jar
- sqlite-jdbc-3.8.10.1.jar
- 控制FX-8.40.11.jar
- sqljdbc42.jar
- jfoenix-1.0.0.jar
- POI-3.17.jar
- poi-examples-3.17.jar
- poi-excelant-3.17.jar
- poi-ooxml-3.17.jar
- poi-ooxml-schemas-3.17.jar
- poi-scratchpad-3.17.jar
我需要的是向它导入一些excel数据。我已经导入了上面的jar文件
但不幸的是,当我尝试运行该项目时,我得到了错误:
Caused by: java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.sheetIterator()Ljava/util/Iterator;
at app.controllers.ContentAreaController.nextActionReport(ContentAreaController.java:734)
... 62 more
我试过谷歌搜索,建议我更改 poi lib 文件的版本,但没有运气。任何人都可以建议我解决方案,因为我在这个问题上花了足够的时间
解决方案
对答案提出一些评论 - 您的类路径中有较旧的 Apache POI jar。根据此 POI FAQ - 不支持在版本之间混合 POI jar
您需要做的只是移除旧的 POI 罐子。我只是说,因为你不知道你有它们......幸运的是,如果你遵循这个 Apache POI FAQ 中的代码,它将帮助你找到旧 jars 的来源。在有问题的系统上运行时,应该打印出旧 jar 的名称和位置:
ClassLoader classloader =
org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource(
"org/apache/poi/poifs/filesystem/POIFSFileSystem.class");
String path = res.getPath();
System.out.println("POI Core came from " + path);
classloader = org.apache.poi.POIXMLDocument.class.getClassLoader();
res = classloader.getResource("org/apache/poi/POIXMLDocument.class");
path = res.getPath();
System.out.println("POI OOXML came from " + path);
classloader = org.apache.poi.hslf.usermodel.HSLFSlideShow.class.getClassLoader();
res = classloader.getResource("org/apache/poi/hslf/usermodel/HSLFSlideShow.class");
path = res.getPath();
System.out.println("POI Scratchpad came from " + path);
只需识别您不想要的旧罐子,删除,您就应该设置好!
推荐阅读
- stripe-payments - Stripe:即使更改了卡片详细信息,卡片也会被拒绝
- ios - How to use image contained in Resource framework from main module?
- visual-studio-2017 - 如何忽略 VS2017 SQL 数据库项目中的构建错误(而不是警告)
- java - Workday Soap 请求性能
- php - 如何在 php mysql 中从时间戳 = 1574463600 获取本地日期
- python - python 3解决数据框
- ibm-mq - Websphere/IM MQ 9.0 的 mqm 组和用户是硬编码的吗?
- kubernetes - Kubernetes集群中服务端点的基于延迟的路由
- c# - C# Pomelo mySQL 触发器 onUpdate Timestamp
- tensorflow - 时间序列预测的测试集