Apache POI工作簿抛出java.lang.reflect.InvocationTargetException

Apache POI工作簿抛出java.lang.reflect.InvocationTargetException,java,excel,apache-poi,Java,Excel,Apache Poi,我正在尝试使用以下代码实例化工作簿: Workbook workbook = WorkbookFactory.create(new File(excelWorkbookFilePath)); 我这样做是因为工作簿可以是.xlsx或.xls。但是,它最终会抛出以下错误: Exception in thread "main" org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException at org.

我正在尝试使用以下代码实例化工作簿:

Workbook workbook = WorkbookFactory.create(new File(excelWorkbookFilePath));
我这样做是因为工作簿可以是.xlsx或.xls。但是,它最终会抛出以下错误:

Exception in thread "main" org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
    at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:65)
    at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:601)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:174)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:249)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:293)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:252)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:231)
    at com.iconectiv.handle.ExcelHandle.<init>(ExcelHandle.java:43)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
    at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62)
    ... 9 more
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setLoadEntityBytesLimit(I)Lorg/apache/xmlbeans/XmlOptions;
    at org.apache.poi.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:50)
    at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:85)
    ... 15 more
然而,我在Eclipse中得到一个错误,说我无法捕获它,因为它从未从任何东西中抛出。为什么我会犯这个错误?任何帮助都将不胜感激,提前感谢


注意:我使用的是ApachePOI3.14。

引发的实际错误是 NoSuchMethodError:org.apache.xmlbeans.xmloadOptions.setLoadEntityBytesLimitILorg/apache/xmlbeans/xmloadOptions


可能您的类路径中没有xmlbean jar,或者您可能有多个版本的jar,抛出的实际错误是 NoSuchMethodError:org.apache.xmlbeans.xmloadOptions.setLoadEntityBytesLimitILorg/apache/xmlbeans/xmloadOptions


可能您的类路径中没有xmlbean jar,或者您可能有多个版本的jar,您可以根据文件名分别为.xls和.xlsx扩展名实例化工作簿:

Workbook wb = null;
    if (fileName.endsWith(".xlsx")) {
        wb = new XSSFWorkbook(in);
    }else{
        fs = new POIFSFileSystem(in);
        wb = (Workbook) new HSSFWorkbook(fs);   
    } 

您可以根据文件名分别为.xls和.xlsx扩展名实例化工作簿:

Workbook wb = null;
    if (fileName.endsWith(".xlsx")) {
        wb = new XSSFWorkbook(in);
    }else{
        fs = new POIFSFileSystem(in);
        wb = (Workbook) new HSSFWorkbook(fs);   
    } 

我已经用相同的版本更新了pom。前面我为poi ooxml提供了不同的版本3.9.0,为poi ooxml提供了不同的版本4.0

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.1.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.1.0</version>
            </dependency>

它对我有效

我已经用相同的版本更新了pom。前面我为poi ooxml提供了不同的版本3.9.0,为poi ooxml提供了不同的版本4.0

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.1.0</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.1.0</version>
            </dependency>

我的类路径中有xmlbeans-2.5.0.jar。我需要升级吗?正在尝试升级,并确保没有多个版本的jarI正在尝试升级,但我只在Apache Attic中看到版本1.0。。。在哪里可以获得XMLBeans网站上列出的2.6版?我在那里没有看到下载链接。我的项目不使用Maven。我点击了2.6.0。我正在使用POI 4.0和xmlbeans 2.6.0,但仍然得到相同的错误。。有什么想法吗?我的类路径中有xmlbeans-2.5.0.jar。我需要升级吗?正在尝试升级,并确保没有多个版本的jarI正在尝试升级,但我只在Apache Attic中看到版本1.0。。。在哪里可以获得XMLBeans网站上列出的2.6版?我在那里没有看到下载链接。我的项目不使用Maven。我点击了2.6.0。我正在使用POI 4.0和xmlbeans 2.6.0,但仍然得到相同的错误。。伙计们,有什么想法吗?谢谢,不过这给了我同样的错误。谢谢,不过这给了我同样的错误。