Warum erhalte ich java.lang.AbstractMethodError-Fehler?

Lesezeit: 3 Minuten

Benutzer-Avatar
Avinash

Was sind die möglichen Ursachen für ABstractMethodError?

Ausnahme im Thread “pool-1-thread-1” java.lang.AbstractMethodError:

org.apache.thrift.ProcessFunction.isOneway()Z
    at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:51)
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
    at com.gemfire.gemstone.thrift.hbase.ThreadPoolServer$ClientConnnection.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

  • Gib uns etwas Kontext, was versuchst du zu tun? Kann ein Versionsproblem sein! Die Methode, die Sie aufrufen oder die ein anderer Code aufruft, wird jetzt in eine abstrakte Methode umgewandelt.

    – AllTooSir

    31. Juli 2013 um 11:44 Uhr


  • Ich habe die Thrift-Version von hbase ausprobiert. Ich baue Thrift-Compiler und generierte Thrift-Dateien. und mit mvn mein Projekt erstellen, das auch die Version 0.9.0 von Apache Thrift Jars herunterlädt. das ist das gleiche, das ich benutze.

    – Avinash

    31. Juli 2013 um 11:56 Uhr

Dies bedeutet normalerweise, dass Sie eine alte Version einer Schnittstellenimplementierung verwenden, der eine neue Schnittstellenmethode fehlt. Beispielsweise hat die java.sql.Connection-Schnittstelle in 1.7 eine neue getSchema-Methode erhalten. Wenn Sie 1.6 JDBC-Treiber haben und Connection.getSchema aufrufen, erhalten Sie AbstractMethodError.

  • Schön, Sie hatten mich bei “alte Version einer Schnittstelle”

    – mtyson

    7. September 2016 um 20:53 Uhr

  • Diese Ausnahme ist kürzlich aufgetreten. Es ist genau die Ursache – Schnittstelle zwischen Komponenten zur Laufzeit inkompatibel. Weitere Einzelheiten finden Sie im Javadoc der Ausnahme.

    – tuan.dinh

    11. Mai 2018 um 7:15 Uhr

Die einfache Antwort lautet: Ein Code versucht, eine deklarierte Methode aufzurufen abstract. Abstrakte Methoden haben keinen Körper und können nicht ausgeführt werden. Da Sie so wenig Informationen bereitgestellt haben, kann ich nicht näher darauf eingehen, wie dies passieren kann, da der Compiler dieses Problem normalerweise abfängt – wie hier beschrieben bedeutet dies, dass sich die Klasse zur Laufzeit geändert haben muss.

  • Ja, die Methode ist als abstrakt definiert, aber ich habe die Eclipse nachverfolgt und sehe, dass Methoden in untergeordneten Klassen implementiert sind

    – Avinash

    31. Juli 2013 um 11:56 Uhr

  • Sicher, aber das bedeutet, dass Sie eine bestimmte untergeordnete Klassenimplementierung aufrufen müssen. Sie können die Methode selbst immer noch nicht aufrufen.

    – devrobf

    31. Juli 2013 um 11:57 Uhr

  • Ich habe noch einmal nachgesehen, dass der von Apache Sparsamkeit generierte Code die spezifische Implementierung des untergeordneten Objekts aufruft

    – Avinash

    31. Juli 2013 um 12:51 Uhr

  • Bitte überprüfen Sie das noch einmal. Wenn Sie sich immer noch sicher sind, eröffnen Sie ein JIRA-Ticket mit einem vollständigen, reproduzierbaren Testfall.

    – JensG

    31. Juli 2013 um 22:43 Uhr

Aus Dokumentation v AbstractMethodError

Wird ausgelöst, wenn eine Anwendung versucht, eine abstrakte Methode aufzurufen. Normalerweise wird dieser Fehler vom Compiler abgefangen; Dieser Fehler kann nur zur Laufzeit auftreten, wenn sich die Definition einer Klasse inkompatibel geändert hat, seit die aktuell ausgeführte Methode zuletzt kompiliert wurde.

Eine Art Sonderfall der obigen Antwort.

Ich hatte diesen Fehler, weil ich a verwendet habe spring-boot-starter-parent (z.B 2.1.0.RELEASE verwendet Federversion: 5.1.2.RELEASE) aber ich zudem enthalten a BOMdie auch einige Spring-Abhängigkeiten definierte, aber in einer älteren Version (z 5.0.9.RELEASE).

Eine Sache, die Sie tun müssen, ist, Ihre zu überprüfen dependency tree (in Eclipse können Sie zB die Abhängigkeitshierarchie verwenden), wenn Sie die gleichen Versionen verwenden.

Eine Lösung könnte also darin bestehen, dass Sie die Federabhängigkeiten in Ihrem aktualisieren BOMeine andere könnte sein, dass Sie sie ausschließen (aber je nach Menge könnte dies hässlich sein).

Benutzer-Avatar
Thanh Nhat

Wenn Sie eine Projekt-ZIP-Datei herunterladen, nachdem Sie sie entpackt und in Android Studio importiert haben, können Sie das Projekt nicht ausführen, da dieser Fehler aufgetreten ist.

Ich habe das Problem gelöst, indem ich mein Android Studio gelöscht und dann die neue Version heruntergeladen und installiert habe.

Ich hoffe wirklich, dass es hilft.

Benutzer-Avatar
Gemeinschaft

Wenn Sie diesen Fehler bei den implementierten Methoden erhalten, stellen Sie sicher, dass Sie Ihre Abhängigkeiten korrekt hinzugefügt haben, wie in diesem Thread erwähnt.

Benutzer-Avatar
Yutanpo

Wie Damian zitiert:

Normalerweise wird dieser Fehler vom Compiler abgefangen; Dieser Fehler kann nur zur Laufzeit auftreten, wenn […]

Ich hatte den gleichen Fehler, der nicht vom Compiler, sondern zur Laufzeit abgefangen wurde. Um es zu lösen, habe ich nur neu kompiliert, ohne den Code zu ändern.

1014290cookie-checkWarum erhalte ich java.lang.AbstractMethodError-Fehler?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy