2016-07-27 3 views
2

Ich bin neu bei GWT und versuche, eine kleine Anwendung zu erstellen. Ich baue gerade ein kleines Framework für die App, einen generischen Layout-Handler, etc. Dies ist vielleicht nicht das letzte Problem, auf das ich stoßen werde, aber ich kann einfach keine Lösung für Google finden.

Also ich habe eine Klassenart, die mir Composites zurückgibt. Außerdem habe ich eine andere, die diese Art von Klassen in Stack speichert (ich habe auch versucht, Vector, ich dachte, vielleicht GWT hat Probleme damit). Es war egal. Wenn ich die .clear Methode auf dem Stapel anrufe, habe ich den oben erwähnten Fehler im Inspektionsmenü von Chrome: Uncaught TypeError: Kann die Eigenschaft 'clear_31_g $' von undefined nicht lesen

Wie wenn GWT nicht weiß, wie man umrechnet diese Methode zu Javascript oder was? Weißt du, was ist das Problem hier?

Eclipse neon, Java 7 Einstellung auf Java SDK 1.8 (vielleicht das?), GWT 2.7.0 und App Engine 1.9.34

Dank!

edit1: Ich habe auch die Seite gefunden, die die Liste der emulierten JRE-Klassen (http://www.gwtproject.org/doc/latest/RefJreEmulation.html) mit allen unterstützten Methoden enthält. Jetzt sehe ich, dass Clear für Stack nicht auf der Liste steht, aber leer ist und das gibt mir den gleichen Fehler. : -/

+3

Sie rufen 'clear' Methode auf' null'. – Adam

+0

Ah jeez, das war es. Selbst die Fehlermeldung ist beschreibend, aber ich konnte einfach nicht durchschauen. Vielen Dank! p.s. vielleicht solltest du es in den Antwortbogen schreiben und ich könnte es akzeptieren. – newhouse

+0

OK, ich habe eine Antwort geschrieben. Ich hoffe, es wird auch anderen helfen. – Adam

Antwort

2

Dieser Fehler bedeutet einfach, dass Sie versuchen, die clear() Methode auf einem null Objekt (das Objekt ist undefined) aufzurufen.

Die Fehlermeldung selbst ist nicht so klar wie es sein könnte. Erstens geht es nicht immer darum, eine Eigenschaft zu lesen, sondern auch, eine Methode aufzurufen. Zweitens, denken Sie daran, dass Sie eine kompilierte Javascript-Code ausführen und der Name der Eigenschaft (oder Methode) kann sich von der ursprünglichen unterscheiden - es hat so etwas wie in der Laufzeit hinzugefügt.

+0

"Zuerst geht es nicht immer um das Lesen einer Eigenschaft, sondern auch um das Aufrufen einer Methode" - also wenn ich eine Methode aufrufen würde, die für die angegebene Klasse in JavaSE ist, aber nicht von der JRE-Emulation unterstützt wird (http: // www.gwtproject.org/doc/latest/RefJreEmulation.html), dann würde ich den gleichen Fehler bekommen? Und danke für die Hilfe, das war das Problem. – newhouse

+0

Ich bin froh, dass ich helfen konnte :) Und ich meinte, dass die Fehlermeldung beide Situationen unterscheiden kann und 'Methode kann nicht aufgerufen werden ... von undefiniert' oder' Eigenschaft nicht lesen ... von undefiniert'. Wenn Sie eine Methode aufrufen, die von der JRE-Emulation nicht unterstützt wird, erhalten Sie einen Fehler wie 'Die Methode lineSeparator() ist für den Typ System' error undefiniert. Wenn Sie eine Klasse verwenden, die nicht in der JRE-Emulation ist, erhalten Sie 'Kein Quellcode ist verfügbar für Typ ...' Fehler (zum Beispiel java.awt.Color Klasse). – Adam

Verwandte Themen