Tat*_*ere 5 java excel apache-poi
请我需要一些关于错误的帮助。我有一个带有以下 jar 文件的 javafx 项目
我需要的是向其中导入一些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
Run Code Online (Sandbox Code Playgroud)
我试过谷歌搜索,建议我更改 poi lib 文件的版本,但没有运气。谁能建议我解决方案,因为我在这个问题上花了足够的时间
对答案进行一些评论 - 您的类路径上有较旧的 Apache POI jar。根据这个 POI FAQ - 不支持在版本之间混合 POI jars
您需要做的只是移除旧的 POI 罐子。我只是说,因为您不知道您拥有它们...幸运的是,如果您遵循此 Apache POI 常见问题解答中的代码,它将帮助您找到旧 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);
Run Code Online (Sandbox Code Playgroud)
只需确定您不想要的旧罐子,移除,您就应该设置好!