java.lang.NoSuchMethodError:org.apache.commons.compress.utils.IOUtils.readFully(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;)

java.lang.NoSuchMethodError:org.apache.commons.compress.utils.IOUtils.readFully(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;),java,nosuchmethoderror,mirth,mirth-connect,Java,Nosuchmethoderror,Mirth,Mirth Connect,我当时正在使用ApacheCommons-compress-1.15.jar并使用mirth connect工具,尽管该方法在java文件IOUtils.java中找到,但在mirth工具ReadFullyReadable ByTechannel中仍然给出了这个错误,但找不到ByteBuffer。请帮我纠正这个错误 谢谢。您可能没有使用commons-compress-1.15.jar,而是使用旧版本,因为它是从1.15开始引入的。欢乐已经在使用commons-compress-jar了。您可以

我当时正在使用ApacheCommons-compress-1.15.jar并使用mirth connect工具,尽管该方法在java文件IOUtils.java中找到,但在mirth工具ReadFullyReadable ByTechannel中仍然给出了这个错误,但找不到ByteBuffer。请帮我纠正这个错误


谢谢。

您可能没有使用commons-compress-1.15.jar,而是使用旧版本,因为它是从1.15开始引入的。

欢乐已经在使用commons-compress-jar了。您可以在下面的路径中找到mirth正在使用的commons compress版本

{Mirth Installed Location}/server lib/commons/commons compress-{version}.jar {Mirth Installed Location}/client lib/commons compress-{version}.jar
当您使用与编译时使用的库版本不同的库版本运行时,通常会发生这种情况。@Henry感谢您的响应,请举例说明。我没有完全了解这些版本。请澄清一下,我使用的是JDK1.8和MirthConnect版本是3.5.1。请详细说明一个例子。谢谢。嗨@KoheiTAMURA,我使用的是common-compress-1.15.jar,我可以在IOUtils.java文件中找到readFullyReadableByteChannel,ByteBuffer方法,但是当我在mirth connect工具中运行它时,它仍然返回了NoSuchMethodError。如果可能的话,您还可以在common-compress-1.15.jar中提取并反编译IOUtils,以检查反编译的IOUtils.java中是否存在该方法。我可以确保在common-compress-1.15.jar中IOUtils.java中存在readFullyReadableByteChannel、ByteBuffer方法。它运行良好,并在NetBeans或eclipse中生成输出,但当它转换为单个jar文件并在mirth connect tool中运行时,它抛出NoSuchMethodError-readFullyReadableByteChannel,IOUtils.java中的ByteBuffer,mirth connect工具调用另一个org.apache.commons.compress.utils.IOUtils,而不是common-compress-1.15.jar中的。common-compress-jar文件只有一个版本是。。。。common-compress-1.15.jar不包括其他版本,它如何偏离流程?当我在任何ide(如NetBeans和Eclipse)中运行应用程序时,它确实运行良好并生成输出。但是,在使用mirthconnect的情况下,将整个java应用程序作为jar文件提供,并尝试在mirthconnect中部署通道。然后它抛出nosuchMethodErrorReadFullyReadableByTechannel和ByteBuffer,即使该方法存在于jar文件中。非常感谢。