即使jar/类具有特殊方法,我们什么时候也会得到java.lang.NoSuchMethodError
我使用IText库在小程序中方便pdf导出。在导出调用过程中,它失败,出现以下错误:即使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有它 这是堆栈跟踪;
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()Vcom.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版本进行编译。可能是类路径中出现了不同的版本,或者自编译类以来,该特定方法的签名已更改
NoClassDefFoundError
,但事实并非如此NoClassDefFoundError
也可能是两个版本的jar出现在小程序类路径中,而加载的jar与编译代码时使用的jar具有不同的签名,这意味着类路径中有两个版本的PdfPTable。您正在使用的两个jar文件可能打包了同一类的不同版本。简单的解决方法是对类路径中的jar文件执行jar-tf,并对类名进行grep。