2

すべての Java メソッドを JavaScript スクリプトからアクセスできるようにしようとしています。

「ショートカット」が必要なので、次のガイドに従いました: https://stackoverflow.com/a/19197130/2897090。しかし、Java メソッドに可変引数がある場合、そのメソッドを JavaScript 言語で使用するために「公開」することができません。

public void printf(String format, Object... args) {
    out.printf(format, args);
}
//Gives org.mozilla.javascript.EvaluatorException: Unsupported parameter type "[Ljava.lang.Object;" in method printf

別のもの:

printf「javascript」だけを使用して「へのショートカット」を作成しようとすると:

function printf(format){
    java.lang.System.out.printf(format, arguments);
}

何かを入力すると、 が表示されますorg.mozilla.javascript.Arguments@NNNNNN。それを修正する方法は?

ありがとうございました。

アップデート

解決策が見つからなかったので、アプローチを変更しました。今は ScriptEngine を使用しています。実際に私がやっていることは、(関数だけでなく) オブジェクト全体を公開することです。残念ながら、関数を呼び出す必要があるたびに、公開したオブジェクトの名前を前に付ける必要があります。

とにかく、これで、可変引数を持つ Java メソッドを作成し、JavaScript 側で変更せずにそれらを使用することができました。

4

1 に答える 1