java.lang.NoSuchMethodError: Obwohl Methode vorhanden

sylo

Bekanntes Mitglied
Hi zusammen

bekomme folgenden Fehler:

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: org.w3c.dom.Document.getXmlEncoding()Ljava/lang/String;

beim Aufruf in dieser Zeile:

Java:
Document domXML = db.parse(file);
String test = domXML.getXmlEncoding();

db ist mein DocumentBuilder. Ich benutze den DOM Parser.

Die Methode getXMLEncoding() existiert laut API. Benutze Java 1.5. Weiß einer was damit anzufangen?

Grüße
sylo
 
dass du deine eigene Klasse überhaupt kompilieren kannst, zeigt dass zu diesem Zeitpunkt die Methode bekannt ist,
kein Wunder dass du sie für existent hälst

bei der Ausführung des Programms wird dann aber anscheinend mit anderen Libraries gearbeitet, z.B. eine andere Java-Version, eine andere installierte JRE,
was kannst du dazu sagen, benutzt du java.exe auf der Konsole, eine IDE, eine komplizierte Umgebung wie ein WebServer/ ein Applet im Broswer,
findet das auf demselben Rechner statt usw.?
 
Hi

ich benutze Eclipse und alles wird auf einem Rechner ausgeführt.
Das einzige was das Programm benutzen kann, sind doch die Libraries die ich unter Build-Path angegeben habe.
Dort habe ich unter Punkt "Libraries" drei Einträge. winlaf.jar(externes LookAndFeel), xerces.jar(benötige ich zum Speichern von Dateien) und das jdk1.5.

Jetzt wo du es erwähnst, könnte ich mir vorstellen dass der xerces zicken macht. In der JDK wird doch auch der Xerces verwendet oder? Und wenn der während der Laufzeit den xerces quasi ändert, könnte dass das Problem sein.

Ich schau mal nach und meld mich dann nochmal. Kann aber ne weile dauern.

Trotzdem danke mal für den Hinweis.

Grüße
sylo
 
hi zusammen

kann mir einer bitte folgendes Verhalten erklären:

Unter BuildPath/Order and Export des Projektes habe ich wie bereits erwähnt mein JDK, xerces.jar und winlaf.jar. Wenn das xerces.jar vor dem jdk (also über) ist, dann gehts, wenn das jdk vorne ist dann geht es nicht.

Wieso spielt den die Reihenfolge der Exports eine Rolle?

Grüße
sylo
 
hi zusammen

du hast recht Landei. es sind sogar zwei verschiedene Methodennamen.Sind mir blos auf den ersten Blick nicht aufgefallen. Das eine heißt getXMLEncoding() und das andere getEncoding().

Also wenn ich unter BuildPath/Order and Export mein JDK über Xerces.jar habe, nennt mir Eclipse alle Methode in getXMLEncoding() um. Wenn der Xerces weiter oben steht, dann heißen die plötzlich getEncoding() und es funktioniert.

Mir ist immer noch nicht klar warum die Reihenfolge eine Rolle spielt. Während der Implementierung ist es doch eindeutig welches benutzt werden soll. :bahnhof:

Grüße
sylo
 
was meinst du mit Implementierung?

zum Zeitpunkt, zu dem deine eigenen Klassen compiliert werden, wird allein die Information vermerkt
'nimm die Klasse die package.Klassenname heißt und dort die Methode xy mit Parameter z (wiederum Klassenname)'

zur Laufzeit werden dann beliebige Klassen aus ganz beliebigen Jars geladen, bei Namensgleichheit wahrscheinlich nur die erste oder die letzte,
wenn es also ein Jar mit einer anderen Klasse gleichen Namens gibt, dann kann die drankommen und dann die benötigte Methode eben nicht haben
 
Hmmm

@SlaterB
ich meinte den Zeitpunkt während ich den Code eingebe. Eclipse schlägt mir ja alle möglichen Methoden/Varibalen vor, wenn ich den Klassennamen eingebe und dann "punkt" drücke.

ok. ich verstehe zwar deine Antwort, bin aber trotzdem noch etwas verwirrt. Naja ich informier mich mal noch ein wenig über das genaue Vorgehen von Java, dann wird es sicher klarer.

Danke für eure Antworten.

Grüße
sylo
 
Hi zusammen

bräuchte in diesem Zusammenhang nochmal eure Hilfe. In meinem Projekt existieren 2 externe Jars, die ich beim Exportieren meinem Jar hinzufüge. Das macht Eclipse auch wunderbar.
Die eine Jar ist das xerces.jar Die bereitet mir wohl das Problem.

In Eclipse funktioniert alles einwandfrei, aber nach dem Exportieren wirft er mir, an der Stelle wo die Jar benutzt wird, eine NoSuchMEthod Exception auf die auch schon unten erwähnte Methode getEncoding().

Diesen Fehler verstehe ich leider nicht ganz. Hoffe das mir da nochmal einer weiterhelfen kann.

Grüße
sylo
 
Zuletzt bearbeitet:

Zurück
Oben