两个JAR之间的java类引用问题

两个JAR之间的java类引用问题,java,apache-poi,birt,Java,Apache Poi,Birt,我有一个java类来处理XLS文件,并使用ApachePOIJAR(poi-ooxml-3.8-20120326.jar)来处理。我最近还部署了BIRT jar来生成一些报告。下面是我调用java类进行XLS处理时出现的错误 java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.WorkbookFactory.create(Ljava/io/File;)Lorg/apache/poi/ss/usermodel/Workbook; 我发

我有一个java类来处理XLS文件,并使用ApachePOIJAR(poi-ooxml-3.8-20120326.jar)来处理。我最近还部署了BIRT jar来生成一些报告。下面是我调用java类进行XLS处理时出现的错误

java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.WorkbookFactory.create(Ljava/io/File;)Lorg/apache/poi/ss/usermodel/Workbook;
我发现“WorkbookFactory”类在与BIRT相关的jar(org.eclipse.BIRT.runtime_4.2.1.v20120918-1113.jar)中也可用,并且指定的方法在此jar中不可用。这可能导致上述异常


如何通过在服务器中部署JAR(POI和BIRT)来解决此问题

我在使用POI 3.13时,在使用POI 3.9的BIRT 4.4中遇到了同样的问题

在使用Maven时,我只是在Maven依赖项部分使用了“Exclude Maven Artifact”,以便在不影响整个BIRT依赖项的情况下摆脱旧版本的POI


我希望这不会影响BIRT的完整性。

您使用的是哪个版本的BIRT和POI?如果您重新安排类路径,首先在POI jar中查找类(只需在类路径声明中提及BIRT jar之前提及它),这个问题可能会得到解决。当然,我假设当需要BIRT类时,使用POI类不会带来进一步的冲突。你不能得到一个新版本的BIRT,它使用与你想要使用的相同版本的POI吗?试图从BIRT中删除POI包吗?@SayemAhmed;我正在从BIRT jar中删除POI相关的类,而不是通过使用JavaURI类更改类路径细节或从特定jar加载类文件。看来BIRT 4.3将与POI 3.9一起提供完整的解决方案。但是我等不及了。因此,从BIRT jar本身中删除POI文件。使用新版本的BIRT并引入更新的ApachePOI副本不是更容易吗?(和/或麻烦他们,直到有一个…)最新版本的BIRT使用相同版本的POI(3.9)。请参阅链接:您需要与BIRT背后的人员交谈,并要求他们提供一个新的版本,以升级依赖版本。将使他们意识到为什么他们需要升级!是的,我昨天联系了他们,还在等待他们的回复。