Java で Rhino 内で実行されている JavaScript からローカル ファイルを実行するにはどうすればよいですか? Rhino環境内から機能する方法を検討します。この問題に関する私の現在の調査は以下のとおりです。
Mozillaの「Scripting Java」チュートリアルの助けを借りて、java.lang.Runtime.execを介してこれを試みています。アクセスできます。ただし、これは制限されたアクションであるため、直接呼び出すとアクセス制御の例外が発生します。
これを解決するには、AccesController.doPrivileged メソッドを使用する必要があります。Java でこれを使用する例を以下に示します。
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
// Code goes here. Any permission checks within this
// run method will require that the intersection of the
// callers protection domain and the snapshot's
// context have the desired permission.
}
ロード ブロックは、JavaScript での PrivilegedAction の構築を複製しています。
var ourRuntime = Packages.java.lang.Runtime.getRuntime();
//ourRuntime.exec("notepad.exe") //will raise Access Control Exception
var controller = Packages.java.security.AccessController.doPrivileged
var action = new Packages.java.security.PrivilegedAction(ourRuntime.exec("notepad.exe")) // somehow make this wwrk
controller.doPrivileged(action)