Wann bekommen wir java.lang.NoSuchMethodError, auch wenn das Glas/Klasse hat die Methode particualar
Ich bin mit IText-Bibliothek zur Erleichterung der pdf-export in ein applet. Während die export-anrufen es schlägt fehl mit folgendem Fehler:
java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfPTable.completeRow()V
Öffnete ich die Itext jar/PdfPtable.class in JD Decompiler und bestätigt, dass die Klasse hat completeRow als eine öffentliche Methode.
Kann jemand erklären, die möglichen Szenarien, wenn eine java.lang.NoSuchMethodError
geworfen wird, auch wenn Glas/Klasse hat?
Hier ist die stack-trace -; möglicherweise nicht sehr hilfreich, da die meisten Aufrufe sind unsere anwendungsspezifisch.
Fehler beim exportieren in das CSV-Datei - java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfPTable.completeRow()V
com.blox.Tabelle.Aktion.ExportToCSVAction.actionPerformed(ExportToCSVAction.java:193)
javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
javax.swing.DefaultButtonModel.setPressed(Unknown Source)
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
java.das awt.Komponente.processMouseEvent(Unknown Source)
javax.swing.JComponent.processMouseEvent(Unknown Source)
java.das awt.Komponente.processEvent(Unknown Source)
java.das awt.Container.processEvent(Unknown Source)
java.das awt.Komponente.dispatchEventImpl(Unknown Source)
java.das awt.Container.dispatchEventImpl(Unknown Source)
java.das awt.Komponente.dispatchEvent(Unknown Source)
java.das awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
java.das awt.LightweightDispatcher.processMouseEvent(Unknown Source)
java.das awt.LightweightDispatcher.dispatchEvent(Unknown Source)
java.das awt.Container.dispatchEventImpl(Unknown Source)
java.das awt.Fenster.dispatchEventImpl(Unknown Source)
java.das awt.Komponente.dispatchEvent(Unknown Source)
java.das awt.EventQueue.dispatchEvent(Unknown Source)
java.das awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.das awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.das awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
java.das awt.EventDispatchThread.pumpEvents(Unknown Source)
java.das awt.EventDispatchThread.pumpEvents(Unknown Source)
java.das awt.EventDispatchThread.run(Unknown Source)
com.lowagie.text.pdf.PdfPTable.completeRow()V
com.blox.Tabelle.Blick.GridTableModel$PdfExportWriter.writeNewLine(GridTableModel.java:7259)
com.blox.Tabelle.Blick.GridTableModel.buildExportData(GridTableModel.java:3111)
com.blox.Tabelle.Blick.GridTableModel.export(GridTableModel.java:2541)
com.blox.Tabelle.Blick.GridTable.export(GridTable.java:1318)
com.blox.Tabelle.Aktion.ExportToCSVAction.exportToFile(ExportToCSVAction.java:248)
com.blox.Tabelle.Aktion.ExportToCSVAction.access$1(ExportToCSVAction.java:245)
com.blox.Tabelle.Aktion.ExportToCSVAction$Worker.exportToCSVFile(ExportToCSVAction.java:111)
Sonne.reflektieren.NativeMethodAccessorImpl.invoke0(Native-Methode)
Sonne.reflektieren.NativeMethodAccessorImpl.invoke(Unknown Source)
Sonne.reflektieren.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflektieren.Methode.invoke(Unknown Source)
spin.- Aufruf.bewerten(Anrufung.java:175)
spin.off.SpinOffEvaluator$1.run(SpinOffEvaluator.java:108)
java.lang.Thread.run(Unknown Source)
Ich kann nicht sehen, dass diese Methode in iText 2.0.4. Welche version hast du?
Ich bin mit 2.1.5 version von iText. Dieser Aufruf ist nicht der erste; in der Tat, teilweise pdf-export erfolgreich ist. [FEHLER] com.blox.Tabelle.Aktion.ExportToCSVAction.actionPerformed(ExportToCSVAction.java:215) - Fehler beim exportieren in das CSV-Datei - java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfPTable.completeRow()V java.lang.RuntimeException: Fehler beim exportieren in das CSV-Datei - java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfPTable.completeRow()V
Könntest du bitte bewegen Sie den stacktrace text in deine Frage?
InformationsquelleAutor Krishna Kumar | 2009-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte es sein, dass eine andere version angezeigt, in der classpath-oder, dass die Signatur der jeweiligen Methode hat sich geändert, seit Ihre kompiliert Ihrer Klasse
InformationsquelleAutor Chris Gow
In der Regel lassen sich derartige Probleme verursachen, wenn es gibt eine andere version der betreffenden Klasse in den classpath vor der version, die Sie kompilieren (und dass Sie dekompiliert wie gesagt). Dies geschieht oft als classpath-Probleme sind Häufig, auch mit Experten, esp. in Containern, in denen die Reihenfolge der geladenen Bibliotheken nicht angegeben.
So können sagen, Sie verwenden iText 1.eine in Ihrer IDE und kompilierst gegen. Dann stellen Sie Ihre Anwendung in einige container, in denen iText 1.b ist bereits vorinstalliert. Vorinstallierte Bibliotheken haben Vorrang und wenn b < ein dann laufen Sie in dieser Art von problem.
In Ihrem Fall gibt es keine container, aber Sie können mischen Sie die Bibliothek-Versionen während packaging/deployment oder verschiedene klassenpfade für die Entwicklung und Ausführung.
Die jar nicht im classpath zur Laufzeit, nur bei der Kompilierung. Aber dann hätte man eine
NoClassDefFoundError
wenn iText ist das erste mal zugegriffen wird, was nicht der Fall ist.Wenn iText selbst, würde eine Drittanbieter-Bibliothek, die Sie würde auch eine
NoClassDefFoundError
beim Aufruf der Methode, die Bedürfnisse der ungelösten Abhängigkeit.du meinst NoClassDefFoundError, muss ein Fehler sein, weil es nicht erstattungsfähig. Vermutlich sind Sie richtig
Sie sind richtig, habe ich falsch getippt. eine ClassNotFoundException ausgelöst wird, wenn Sie versuchen zu reflektieren, die auf einer Klasse NoClassDefFoundError wird ausgelöst, wenn Sie versuchen zum ausführen von code auf eine kompilierte Klasse nicht im Klassenpfad zur Laufzeit
meine Feste Antwort, vielen Dank
Feste mine, Dank 1. Aber ich finde es verwunderlich, es führt nicht dazu, dass irgendeine Art von Fehler / Warnung :/
InformationsquelleAutor Peter Kofler
Fand ich heraus, dass einer der Dritten Dose war die Bündelung eine ältere version von iText Bibliothek
InformationsquelleAutor Krishna Kumar
Das bedeutet, dass zwei Versionen der Klasse PdfPTable sind in Ihrer Klasse Weg. Zwei jar-Dateien, die Sie verwenden möglicherweise verpackt verschiedene Versionen der gleichen Klasse. Einfache Möglichkeit, um herauszufinden, ist ein jar-tf auf die jar-Dateien im classpath, und grep für Ihre classname. Entweder entfernen Sie die veraltete version oder ändern Sie die Reihenfolge der jar-Dateien in Ihrer Klasse Weg.
InformationsquelleAutor
Ich bin mit netbeans IDE und ich hatte dieses problem einige Male. wenn ich zum Beispiel verändert die Parameter einer Methode, es funktionierte nicht mehr! Versehentlich habe ich verstanden, dass nach der änderung der Methode, wenn ich einen Rechtsklick auf das Projekt und drücken Sie "sauber" ist, gab es kein problem mehr!
InformationsquelleAutor mar
Ich hatte das gleiche problem und ich auf den Clean und Build Project " - Taste, und alles funktioniert nun Super. Vielleicht ist manchmal das problem hängen geblieben ist aus früheren builds und Sie neu erstellen müssen.
InformationsquelleAutor Stefanos Kargas
Könnte es auch sein, dass zwei Versionen der jar-Datei in Ihrem applet classpath und die, die geladen wurden hat eine andere Signatur als die, die Ihren code kompiliert wurde mit
InformationsquelleAutor Armadillo
vielleicht gibt es eine andere version dieser Klasse in den classpath, bevor Sie die version aus, dekompiliert.
Bearbeiten: Oder Sie aktualisiert haben, das Paket, aber vergessen haben, die entweder bereitstellen, um Ihre runtime-classpath oder Sie nicht aktualisiert, der compile classpath, also Ihre runtime-env out of sync mit Ihrem compile-Zeit env.
public void completeRow()
war eingeführt in 2.0.5. Sie müssen eine version vor 2.0.5 in Ihre runtime-classpath. wenn Sie weiterhin dieses problem haben, bitte studieren Sie den Klassenpfad für den Start des Prozesses. wie gesagt, Sie kompilieren, mit der 2.1.5 version.InformationsquelleAutor akf
Dieser arbeitete für mich.
Ich net beans IDE. Ich habe einfach gelöscht, die httpclient und core-jar-Dateien (ich bin mit 4.2.1) und neu Hinzugefügt. Das schien um die Reihenfolge zu ändern und es funktionierte.
Hinzufügen "Letzte Paldin" Antwort, die mir geholfen haben.
InformationsquelleAutor Sean G
Hatte ein etwas ähnliches problem, auf das tiefere Untersuchung bemerkt, dass eine Methode in der Table Klasse ein 3rd-party jar, die ich Hinzugefügt hatte, war in Konflikt mit itext-2.0.4 jar entsprechende Tisch-Methode. So entfernte ich die 3rd-party jar aus dem classpath und Bibliotheken-Ordner und führen Sie eine saubere neu erstellen und jetzt macht es perfekt.
InformationsquelleAutor Juma Wasike