无法在Java applet项目中解析JSObject

时间:2012-12-19 13:55:03

标签: java javascript applet javafx-2 jsobject

我尝试在[{1}} JSObject.getWindow(this)方法中调用init,但无法解析符号JApplet

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

我还在路径getWindow中添加了plugin.jar

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

5 个答案:

答案 0 :(得分:13)

原因是jfxrt.lib还有一个名为JSObject的类。这个JSObject没有plugin.jar定义的getWindow函数。如果更改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

答案 1 :(得分: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

答案 2 :(得分:1)

你有import netscape.javascript.*;吗?

答案 3 :(得分:1)

  

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

JSObject被调用之前,start()通常无法使用。

答案 4 :(得分:1)

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

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