java.lang.NoSuchMethodError: org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(Ljava/io/File;Z) 报错处理

字面看下:没有该方法,首先应该推测有可能是Jar冲突导致的,因为一些jar中的类在升级的过程中不会向下兼容,所以有一些高级属性或方法就jar中没有,此POI就是。
可以先看下这个类的资源加载路径:
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);

然后找到maven中 这个jar包 看是否有多个版本(如果有的话 不引用相关依赖)
我的问题是 因为有了多个版本的poi 其中取消一个依赖 保留最初版本的依赖

 <dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-core</artifactId>
            <version>1.0.5</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

然后maven clean ,清除idea 缓存即可

posted on 2021-07-02 14:11  三千世界a  阅读(572)  评论(0编辑  收藏  举报

导航