9

我正在尝试调用JSObject.getWindow(this)init方法,JApplet但它无法解析符号getWindow

这个问题特别发生在通过 netbeans 创建的 javafx 应用程序项目中,如果在 java 应用程序项目中使用 getWindow 将得到解决。

我还包括了plugin.jarfrom path Java\jdk1.7.0_07\jre\lib

这是我在 netbeans 中创建的 javafx 应用程序项目。

4

5 回答 5

13

原因是 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

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

于 2013-05-23T09:17:16.097 回答
4

我正在使用 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

于 2013-01-04T11:47:10.353 回答
1

你有import netscape.javascript.*;吗?

于 2012-12-19T13:59:03.910 回答
1

试图调用JSObject.getWindow(this)init方法

JSObject通常在被调用之前不可用start()

于 2012-12-19T16:46:52.210 回答
1

@deorvatsingh 这是netbeans的问题,不是您添加jar的顺序。在 JavaFx 应用程序中,jfxar.jar 首先在 netbeans 案例中可见,这就是您无法获得范围的原因JSObject.getWindow(this)

要使用 netbeans 和 fxappication 执行此操作,您首先添加 plugin.jar 然后将 jfxrt.jar 添加到您的应用程序中,然后它将识别。

于 2013-07-08T05:49:37.510 回答