9

JSObject.getWindow(this)initメソッドを呼び出そうとしてJAppletいますが、シンボルを解決できませんgetWindow

この問題は、特に netbeans を介して作成された javafx アプリケーション プロジェクトで発生します。getWindow は、Java アプリケーション プロジェクトで使用すると解決されます。

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 関数を呼び出すことができます。

以下は、両方のクラスの javadoc へのリンクです。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クラスがありますが、2 つのクラスの署名が異なるということです。IntelliJ は、jre/lib の jar をアルファベット順にクラスパスに追加していました。

jfxrt.jar をクラスパスに追加しないように IntelliJ に指示することで、JavaFX を使用していないため、問題を解決できました。

これが示しているのは、JavaFX では JSObject を使用するために別のアプローチが必要だということです。私は JavaFX の専門家ではありません (初心者でもありません) が、次のページは参考になり、JavaFX での Javascript の呼び出しはhttpsWebEngine.executeScript() : //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これは、jarを追加した順序ではないネットビーンズの問題です。JavaFx アプリケーションでは、jfxar.jar が netbeans の場合に最初に表示されますJSObject.getWindow(this)

これを netbeans と fxappication で実行するには、最初に plugin.jar を追加し、次に jfxrt.jar をアプリケーションに追加すると認識されます。

于 2013-07-08T05:49:37.510 に答える