Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.put(Ljava/lang/Object;)V
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.put(Ljava/lang/Object;)V
我的代码行导致错误:
if(!refreshInputStream())
return;
Workbook workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook(datasetInputStream);
刷新输入流函数:
private boolean refreshInputStream(){
if(this.datasetInputStream == null){
if(this.dataset.length() <= 0){
return false;
}
try {
datasetInputStream = new FileInputStream(new File(dataset));
}catch (Exception ex){
}
}
return true;
}
Class 个变量:
public String dataset;
private InputStream datasetInputStream;
还有一个函数可以在到达发生错误的行之前将文件的位置(如C:\Users\Jaysmito774.xlsx
)存储在数据集变量中。
错误:
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.put(Ljava/lang/Object;)V
at org.apache.poi.xssf.model.SharedStringsTable.<clinit>(SharedStringsTable.java:94)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63)
at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:648)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:286)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
at App.searchLocal(App.java:238)
at App.actionPerformed(App.java:207)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access0(EventQueue.java:97)
at java.awt.EventQueue.run(EventQueue.java:709)
at java.awt.EventQueue.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue.run(EventQueue.java:733)
at java.awt.EventQueue.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
我正在尝试打开文件。
https://rbidocs.rbi.org.in/rdocs/content/docs/68774.xlsx
我正在使用 Apache POI 版本 4.0.0。我删除了不必要的 GUI 代码,以便更容易阅读问题。我的代码有什么问题,我该如何解决?
我的依赖项:
xmlbeans-4.0.0.jar
poi.ooxml-schemas-4.1.2.jar
commons-codec-1.10.jar
commons-compress-1.18.jar
commons-collections4-4.2.jar
curvesapi-1.04.jar
poi-4.0.0.jar
poi-ooxml-4.0.0.jar
问题是您的项目依赖于 xmlbeans-4.0.0.jar。 Apache POI 4.0.0 需要 XMLBeans 版本 3.0.1,XMLBeans 4.0.0 版本有不兼容的更改,不能与 Apache POI 的 4.x 版本一起使用。您需要将 XMLBeans 依赖项降级到 3.0.1(或至少 3.x 版本),或者将 Apache POI 升级到 5.0.0.
在相关说明中,您也在混合使用 POI 本身的版本。您依赖于 poi.ooxml-schemas-4.1.2.jar,而您所有其他 POI 依赖项都是 4.0.0。如果您想使用 Apache POI 4.x,则对所有 POI 依赖项使用相同的 4.x 版本。
此外,Apache POI 4.0.0 的二进制分发依赖于 commons-codec-1.11.jar,而非 1.10,以及 curvesapi-1.05.jar,而非 1.04;尽管这些版本可能兼容。
如果这是一个新项目,我建议您从 https://poi.apache.org/ 上的 Apache POI 5.0.0 开始。使用二进制分发包中包含的依赖项(在 zip 的 lib
和 ooxml-lib
文件夹中),或者更好的是,切换到 Apache Maven 或 Gradle,并让它处理您的依赖项。
我的代码行导致错误:
if(!refreshInputStream())
return;
Workbook workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook(datasetInputStream);
刷新输入流函数:
private boolean refreshInputStream(){
if(this.datasetInputStream == null){
if(this.dataset.length() <= 0){
return false;
}
try {
datasetInputStream = new FileInputStream(new File(dataset));
}catch (Exception ex){
}
}
return true;
}
Class 个变量:
public String dataset;
private InputStream datasetInputStream;
还有一个函数可以在到达发生错误的行之前将文件的位置(如C:\Users\Jaysmito774.xlsx
)存储在数据集变量中。
错误:
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.put(Ljava/lang/Object;)V
at org.apache.poi.xssf.model.SharedStringsTable.<clinit>(SharedStringsTable.java:94)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63)
at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:648)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:286)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
at App.searchLocal(App.java:238)
at App.actionPerformed(App.java:207)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access0(EventQueue.java:97)
at java.awt.EventQueue.run(EventQueue.java:709)
at java.awt.EventQueue.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue.run(EventQueue.java:733)
at java.awt.EventQueue.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
我正在尝试打开文件。
https://rbidocs.rbi.org.in/rdocs/content/docs/68774.xlsx
我正在使用 Apache POI 版本 4.0.0。我删除了不必要的 GUI 代码,以便更容易阅读问题。我的代码有什么问题,我该如何解决?
我的依赖项:
xmlbeans-4.0.0.jar
poi.ooxml-schemas-4.1.2.jar
commons-codec-1.10.jar
commons-compress-1.18.jar
commons-collections4-4.2.jar
curvesapi-1.04.jar
poi-4.0.0.jar
poi-ooxml-4.0.0.jar
问题是您的项目依赖于 xmlbeans-4.0.0.jar。 Apache POI 4.0.0 需要 XMLBeans 版本 3.0.1,XMLBeans 4.0.0 版本有不兼容的更改,不能与 Apache POI 的 4.x 版本一起使用。您需要将 XMLBeans 依赖项降级到 3.0.1(或至少 3.x 版本),或者将 Apache POI 升级到 5.0.0.
在相关说明中,您也在混合使用 POI 本身的版本。您依赖于 poi.ooxml-schemas-4.1.2.jar,而您所有其他 POI 依赖项都是 4.0.0。如果您想使用 Apache POI 4.x,则对所有 POI 依赖项使用相同的 4.x 版本。
此外,Apache POI 4.0.0 的二进制分发依赖于 commons-codec-1.11.jar,而非 1.10,以及 curvesapi-1.05.jar,而非 1.04;尽管这些版本可能兼容。
如果这是一个新项目,我建议您从 https://poi.apache.org/ 上的 Apache POI 5.0.0 开始。使用二进制分发包中包含的依赖项(在 zip 的 lib
和 ooxml-lib
文件夹中),或者更好的是,切换到 Apache Maven 或 Gradle,并让它处理您的依赖项。