无法在Java applet项目中解析JSObject

我试图在JAppletinit方法中调用JSObject.getWindow(this) ,但它无法解析符号getWindow

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

我还从路径Java\jdk1.7.0_07\jre\lib包含了plugin.jar

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

原因是jfxrt.lib还有一个名为JSObject的类。 这个JSObject没有plugin.jar定义的getWindow函数。 如果更改JAR的依赖顺序并使java将JSObject解析为plugin.jar,则java可以调用getWindow函数。

以下是两个类的javadocs的链接。注意jfxrt one没有定义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

我正在使用IntelliJ,只是遇到了类似的问题。

我认为正在发生的是jfxrt.jar和plugin.jar都有netscape.javascript.JSObject类,但这两个类有不同的签名。 IntelliJ将jre / lib中的jar按字母顺序添加到类路径中。

通过告诉IntelliJ不要将jfxrt.jar添加到类路径中,我已经能够解决我的问题,因为我没有使用JavaFX。

这指出JavaFX需要一种不同的方法来使用JSObject – 我不是JavaFX的专家(甚至不是初学者),但是下面的页面看起来很有用,并告诉我在JavaFX中使用WebEngine.executeScript()调用Javascript的方式不同WebEngine.executeScript() : https : //blogs.oracle.com/javafx/entry/communicating_between_javascript_and_javafx

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

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

import netscape.javascript.*;

@deorvatsingh这是问题,而不是netbeans你添加jar的顺序。 在JavaFx应用程序中,jfxar.jar在netbeans情况下首先可见,这是因为你无法获得JSObject.getWindow(this)的范围,

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