Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使jar/类具有特殊方法,我们什么时候也会得到java.lang.NoSuchMethodError_Java_Applet_Nosuchmethoderror - Fatal编程技术网

即使jar/类具有特殊方法,我们什么时候也会得到java.lang.NoSuchMethodError

即使jar/类具有特殊方法,我们什么时候也会得到java.lang.NoSuchMethodError,java,applet,nosuchmethoderror,Java,Applet,Nosuchmethoderror,我使用IText库在小程序中方便pdf导出。在导出调用过程中,它失败,出现以下错误: java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfPTable.completeRow()V 我在JD反编译器中打开了Itext jar/PdfPtable.class,并确认该类已将completeRow作为公共方法 有人能解释一下当抛出java.lang.NoSuchMethodError时可能出现的情况吗,即使jar/class有它 这是堆栈跟踪;

我使用IText库在小程序中方便pdf导出。在导出调用过程中,它失败,出现以下错误:

java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfPTable.completeRow()V
我在JD反编译器中打开了Itext jar/PdfPtable.class,并确认该类已将completeRow作为公共方法

有人能解释一下当抛出
java.lang.NoSuchMethodError
时可能出现的情况吗,即使jar/class有它

这是堆栈跟踪;可能没有多大帮助,因为大多数调用都是特定于应用程序的

导出到CSV文件时出错-java.lang.NoSuchMethodError:com.lowagie.text.pdf.PdfPTable.completeRow()V
com.blox.table.action.ExportToCSVAction.actionPerformed(ExportToCSVAction.java:193)
javax.swing.AbstractButton.fireActionPerformed(未知源)
javax.swing.AbstractButton$Handler.actionPerformed(未知源)
javax.swing.DefaultButtonModel.fireActionPerformed(未知源)
javax.swing.DefaultButtonModel.setPressed(未知源)
javax.swing.plaf.basic.BasicButtonListener.MouseRelease(未知源代码)
java.awt.Component.ProcessMouseeEvent(未知源)
javax.swing.JComponent.ProcessMouseeEvent(未知源)
java.awt.Component.processEvent(未知源)
java.awt.Container.processEvent(未知源)
java.awt.Component.dispatchEventImpl(未知源)
java.awt.Container.dispatchEventImpl(未知源)
java.awt.Component.dispatchEvent(未知源)
java.awt.LightweightDispatcher.RetargetMouseeEvent(未知源)
java.awt.LightweightDispatcher.ProcessMouseeEvent(未知源)
java.awt.LightweightDispatcher.dispatchEvent(未知源)
java.awt.Container.dispatchEventImpl(未知源)
java.awt.Window.dispatchEventImpl(未知源)
java.awt.Component.dispatchEvent(未知源)
java.awt.EventQueue.dispatchEvent(未知源)
java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
java.awt.EventDispatchThread.pumpEvents(未知源)
java.awt.EventDispatchThread.pumpEvents(未知源)
java.awt.EventDispatchThread.run(未知源)
com.lowagie.text.pdf.PdfPTable.completeRow()V
com.blox.table.view.GridTableModel$PdfExportWriter.writeNewLine(GridTableModel.java:7259)
com.blox.table.view.GridTableModel.buildExportData(GridTableModel.java:3111)
com.blox.table.view.GridTableModel.export(GridTableModel.java:2541)
com.blox.table.view.GridTable.export(GridTable.java:1318)
com.blox.table.action.ExportToCSVAction.exportToFile(ExportToCSVAction.java:248)
com.blox.table.action.ExportToCSVAction.access$1(ExportToCSVAction.java:245)
com.blox.table.action.ExportToCSVAction$Worker.exportToCSVFile(ExportToCSVAction.java:111)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)
java.lang.reflect.Method.invoke(未知源)
spin.Invocation.evaluate(Invocation.java:175)
spin.off.spinofevaluator$1.run(spinofevaluator.java:108)
java.lang.Thread.run(未知源)


在您反编译的版本之前,您的类路径中可能还有该类的另一个版本。
编辑:或者您已更新包,但忘记将其部署到运行时类路径,或者尚未更新编译类路径,即运行时环境与compiletime环境不同步


public void completeRow()
是在2.0.5中引入的。运行时类路径中必须有2.0.5之前的版本。如果您仍然遇到此问题,请研究启动进程的类路径。如前所述,您正在使用2.1.5版本进行编译。

可能是类路径中出现了不同的版本,或者自编译类以来,该特定方法的签名已更改

  • 通常,如果在您用于编译的版本(以及您之前所述的反编译版本)之前的类路径中存在另一个有问题的类版本,则会导致此类问题。这种情况经常发生,因为类路径问题很常见,专家也有,特别是在容器中,其中加载库的顺序未指定

    假设您在IDE中使用iText 1.a to,并根据它进行编译。然后将应用程序部署到某个容器中,其中预先安装了iText 1.b。预安装的库优先,当b 在您的情况下,没有容器,但是您可以在打包/部署期间混淆库版本,或者使用不同的类路径进行开发和执行

  • jar在运行时不在类路径中,只是在编译时。但是,当第一次访问iText时,您会得到一个
    NoClassDefFoundError
    ,但事实并非如此

  • 如果iText本身会错过第三方库,那么在调用需要未满足依赖关系的方法时,您也会得到一个
    NoClassDefFoundError


  • 也可能是两个版本的jar出现在小程序类路径中,而加载的jar与编译代码时使用的jar具有不同的签名,这意味着类路径中有两个版本的PdfPTable。您正在使用的两个jar文件可能打包了同一类的不同版本。简单的解决方法是对类路径中的jar文件执行jar-tf,并对类名进行grep。