Не удается разрешить JSObject в проекте Java-апплета
Я пытаюсь позвонить JSObject.getWindow(this)
в init
метод JApplet
но он не может разрешить символ getWindow
,
эта проблема, в частности, происходит с проектом приложения javafx, созданным через netbeans, getWindow решается, если используется в проекте приложения java.
Я также включил plugin.jar
с пути Java\jdk1.7.0_07\jre\lib
,
Это проект приложения javafx, который я создал в netbeans.
5 ответов
Причина этого в том, что jfxrt.lib также имеет класс с именем JSObject. Этот JSObject не имеет определенной функции getWindow, а plugin.jar - определенной. Если вы измените порядок зависимостей JAR и сделаете java для преобразования JSObject в plugin.jar, то java сможет вызвать функцию getWindow.
Ниже приведены ссылки на javadocs обоих классов. Обратите внимание, что jfxrt one не определил getWindow.
http://docs.oracle.com/javafx/2/api/netscape/javascript/JSObject.html
Я использую IntelliJ и только что столкнулся с подобной проблемой.
Я думаю, что происходит, что jfxrt.jar и plugin.jar оба имеют netscape.javascript.JSObject
классы, но два класса имеют разные подписи. IntelliJ добавлял баночки из jre / lib в алфавитном порядке в путь к классам.
Сказав IntelliJ не добавлять jfxrt.jar в путь к классам, я смог решить мою проблему, потому что я не использую JavaFX.
Это указывает на то, что JavaFX требует другого подхода к использованию JSObject - я не эксперт (даже не новичок) в JavaFX, но следующая страница выглядит полезной и подсказывает мне, что вызов Javascript в JavaFX выполняется по-другому, используя WebEngine.executeScript()
: https://blogs.oracle.com/javafx/entry/communicating_between_javascript_and_javafx
пытаюсь позвонить
JSObject.getWindow(this)
вinit
метод
JSObject
обычно не доступен до start()
называется.
@deorvatsingh Здесь проблема не в сетевых компонентах, а в порядке добавления банки. в приложении JavaFx jfxar.jar виден первым в случаях NetBeans, поэтому вы не можете получить область для вашего JSObject.getWindow(this)
,
Для выполнения этого с помощью netbeans и fxappication вы сначала добавляете plugin.jar, затем добавляете jfxrt.jar в ваше приложение, после чего он распознает.