开发者社区 问答 正文

遇到poi.UnsupportedFileFormatException 怎么解决? java报错

已解决

遇到org/apache/poi/UnsupportedFileFormatException 怎么解决? java报错。

在编写一个excel导出的案例代码时,发生了这个错误。文件无法被正常导出。经检查文件格式没有问题。错误出在代码里面,这个异常是因为什么原因被抛出来的那?求大佬解答。 异常信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at test.ExcelWriting.main(ExcelWriting.java:24)
    Caused by: java.lang.ClassNotFoundException: org.apache.poi.UnsupportedFileFormatException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 13 more

具体排查错误是在这一行出现的:

XSSFWorkbook myWorkBook = new XSSFWorkbook (fis);

我的pom依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.11-beta2</version>
    </dependency>
  </dependencies>

展开
收起
爱吃鱼的程序员 2020-05-26 09:46:11 8163 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
    采纳回答

    仔细查看了代码和依赖,出现org/apache/poi/UnsupportedFileFormatException这种问题,是由于错误的jar版本。 将依赖进行修改,poi引入下面的一个依赖就可以。

    <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.14</version>
    </dependency> 
    

    我们引入之后点击进去,可以看到里面有相关poi的包,这样可以避免上述版本不一致的问题。

    
      <dependencies>
        <dependency>
           <groupId>org.apache.poi</groupId>
           <artifactId>poi</artifactId>
           <version>3.14</version>
        </dependency>
        <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi-ooxml-schemas</artifactId>
          <version>3.14</version>
        </dependency>
        <dependency>
        	<groupId>com.github.virtuald</groupId>
        	<artifactId>curvesapi</artifactId>
        	<version>1.03</version>
        </dependency>
      </dependencies>
    
    2020-05-26 10:18:38
    赞同 2 展开评论
问答分类:
问答地址: