Java から実行したい AppleScript がいくつかあります。次のようないくつかのオプションがあります。
((new ScriptEngineManager()).getEngineByName("AppleScript")).eval(scriptString))
)Desktop.getDesktop().open("name.app")
)これらの 2 つは私にとって最良の選択肢のように思えました。
Java から実行したい AppleScript がいくつかあります。次のようないくつかのオプションがあります。
((new ScriptEngineManager()).getEngineByName("AppleScript")).eval(scriptString))
)Desktop.getDesktop().open("name.app")
)これらの 2 つは私にとって最良の選択肢のように思えました。
最初のオプションは私には正しいように聞こえますが、何らかの理由で外部スクリプトとして実行したい場合は、シェルスクリプトを実行するのと同じ方法でosascriptを実行することを検討できます。
2 にするかどうかはわかりませんが、それは非常に大きなハンマーのようです。
もう 1 つの古いスタイルの解決策は、'osascript' コマンドを実行することでした。
私が知る限り、スクリプト エンジン サポートを使用することが推奨される方法です。
Applescript の仕組みから、オプション 1 が最善の策であると思います。
Applescript には、プレーン テキストの Applescript とコンパイル済みの Applescript の 2 種類があります。Complied Applescript は、Applescript コンパイラによって (本質的に) バイトコードに変換されています。
したがって、アプリケーションで許可されている場合は、すべての Applescriptを一度コンパイルしてから、後で呼び出すことを検討してください。これにより、時間を節約できます (数秒?)。
(ここでは、eval
コマンドに加えて、Java クラスには Applescript をコンパイルする方法があると推測しています。)
コンパイル段階で、Applescript はスクリプトが使用するすべてのアプリケーションを識別しようとします。Applescript が「すみません、SurfWriter が見つかりません。アプリを教えてください」と言うのは、この段階だと思います。この種のユーザー エクスペリエンスは、ユーザーができる限りやりたくないことの 1 つです ;)