我正在尝试调用JSObject.getWindow(this)
的init
方法,JApplet
但它无法解析符号getWindow
。
这个问题特别发生在通过 netbeans 创建的 javafx 应用程序项目中,如果在 java 应用程序项目中使用 getWindow 将得到解决。
我还包括了plugin.jar
from path Java\jdk1.7.0_07\jre\lib
。
这是我在 netbeans 中创建的 javafx 应用程序项目。
我正在尝试调用JSObject.getWindow(this)
的init
方法,JApplet
但它无法解析符号getWindow
。
这个问题特别发生在通过 netbeans 创建的 javafx 应用程序项目中,如果在 java 应用程序项目中使用 getWindow 将得到解决。
我还包括了plugin.jar
from path Java\jdk1.7.0_07\jre\lib
。
这是我在 netbeans 中创建的 javafx 应用程序项目。
原因是 jfxrt.lib 还有一个名为 JSObject 的类。这个 JSObject 没有定义 getWindow 函数,而 plugin.jar 有。如果你改变 JAR 的依赖顺序并使 java 将 JSObject 解析为 plugin.jar 那么 java 就可以调用 getWindow 函数。
以下是两个类的 javadocs 的链接。请注意,jfxrt 一个没有定义 getWindow。
http://docs.oracle.com/javafx/2/api/netscape/javascript/JSObject.html
我正在使用 IntelliJ,只是遇到了类似的问题。
我认为正在发生的是 jfxrt.jar 和 plugin.jar 都有netscape.javascript.JSObject
类,但是这两个类有不同的签名。IntelliJ 按字母顺序将 jre/lib 中的 jar 添加到类路径中。
通过告诉 IntelliJ 不要将 jfxrt.jar 添加到类路径中,我能够解决我的问题,因为我没有使用 JavaFX。
这表明JavaFX需要一种不同的方法来使用JSObject——我不是JavaFX的专家(甚至不是初学者),但下面的页面看起来很有用,并向我建议在JavaFX中调用Javascript的方式不同WebEngine.executeScript()
:https: //blogs.oracle.com/javafx/entry/communicating_between_javascript_and_javafx
你有import netscape.javascript.*;
吗?
试图调用
JSObject.getWindow(this)
该init
方法
JSObject
通常在被调用之前不可用start()
。
@deorvatsingh 这是netbeans的问题,不是您添加jar的顺序。在 JavaFx 应用程序中,jfxar.jar 首先在 netbeans 案例中可见,这就是您无法获得范围的原因JSObject.getWindow(this)
,
要使用 netbeans 和 fxappication 执行此操作,您首先添加 plugin.jar 然后将 jfxrt.jar 添加到您的应用程序中,然后它将识别。