2012-12-19 12 views
9

Próbuję wywołać JSObject.getWindow(this) w metodzie init z JApplet, ale nie jest w stanie rozwiązać symbolu getWindow.Nie można rozwiązać JSObject w projekcie apletu java

Ten problem występuje w szczególności w projekcie aplikacji javafx utworzonym za pomocą netbeans, getWindow jest rozwiązywany, jeśli jest używany w projekcie aplikacji Java.

Dołączyłem również plugin.jar ze ścieżki Java\jdk1.7.0_07\jre\lib.

To jest projekt aplikacji javafx, który utworzyłem w netbeans.

+1

* "nie jest w stanie rozwiązać symbolu getWindow." * Czy oznacza to samo co "zwraca' null "lub czy jest to coś innego? Czy masz link do miejsca, w którym możemy odwiedzić aplikację. (i widzisz, że to się nie udaje)? Pomocne może być również dodanie kodu [SSCCE] (http://sscce.org/) kodu, który uruchamia błąd - nie powinien zająć więcej niż 2 tuziny linii. –

+0

może być pokrewny: Budowałem z wczesnymi wersjami Java 8, a przynajmniej od czasu kompilacji 72 dostaję również awarię kompilacji dla apletów używających tej metody ('com.netscape.JSObject.getWindow'). – haylem

+2

Złożyłem [RT-30622 Nie można rozwiązać JSObject.getWindow (this) w projekcie apletu java] (https://javafx-jira.kenai.com/browse/RT-30622) przeciwko projektowi JavaFX, aby śledzić ten problem . – jewelsea

Odpowiedz

13

Powodem tego jest to, że jfxrt.lib posiada również klasę o nazwie JSObject. Ten JSObject nie ma zdefiniowanej funkcji getWindow, podczas gdy plik plugin.jar ma. Jeśli zmienisz kolejność zależności JAR i ustawisz java na JSObject na plugin.jar, java będzie mogła wywołać funkcję getWindow.

Poniżej znajdują się linki do javadocs obu klas. Zwróć uwagę, że jfxrt nie ma zdefiniowanego getWindow.

http://docs.oracle.com/javafx/2/api/netscape/javascript/JSObject.html

http://www.oracle.com/webfolder/technetwork/java/plugin2/liveconnect/jsobject-javadoc/netscape/javascript/JSObject.html

1

Czy byłeś import netscape.javascript.*;?

+0

tak, dodałem. –

+0

Nie jestem zaznajomiony z NetBeans, powinieneś sprawdzić, czy dodałeś plugin.jar do swojej ścieżki klasy. – tchike

+0

Czy uruchamiasz aplet bezpośrednio z NetBeans, czy używasz przeglądarki? Może tam jest różnica. –

1

próby wywołania JSObject.getWindow(this) w metodzie

JSObjectinit zazwyczaj nie jest dostępna aż start() nazywa.

+0

Nawet na początku nie jest w stanie rozwiązać problemu, dając błąd kompilacji informujący, że nie znaleziono symbolu getWindow. Jest on w stanie rozpoznać JSObject. Dzieje się tak tylko wtedy, gdy tworzę projekt aplikacji javafx w Netbeans, działa dobrze z projektem aplikacji java. –

4

Używam IntelliJ i właśnie napotkałem podobny problem.

To, co myślę, że dzieje się to, to że jfxrt.jar i plugin.jar mają klasy netscape.javascript.JSObject, ale dwie klasy mają różne sygnatury. IntelliJ dodawał słoiki z jre/lib w kolejności alfabetycznej do ścieżki klas.

Mówiąc IntelliJ, aby nie dodawał pliku jfxrt.jar do ścieżki klasy, udało mi się rozwiązać problem, ponieważ nie używam JavaFX.

Co to oznacza, że ​​JavaFX wymaga innego podejścia do korzystania z JSObject - nie jestem ekspertem (nawet początkującym) w JavaFX, ale następna strona wygląda użytecznie i sugeruje, że wywołanie JavaScriptu jest zrobione inaczej w JavaFX stosując WebEngine.executeScript(): https://blogs.oracle.com/javafx/entry/communicating_between_javascript_and_javafx

1

@deorvatsingh Oto problem nie z netbeans kolejności dodano słoik jest. w JavaFX jfxar.jar aplikacja jest widoczna pierwsza w NetBeans przypadkach Ów powodu nie są w stanie uzyskać zakres dla twojej JSObject.getWindow(this),

Za wykonanie tego z netbeans i fxappication najpierw dodać jfxrt plugin.jar następnie dodać. słoik do twojej aplikacji, wtedy to rozpozna.

Powiązane problemy