OS X用のJava SWTアプリケーションを作成し、.jarとしてエクスポートして.appにバンドルしました。すべては私のアプリ内の重要な部分を除いて、期待どおりに動作します。他のアプリを開く必要があります。OS X Javaの.appバンドルで他のアプリを開くことができません。
私はRuntime.exec();
と同様にProcessBuilder
を試しました。起動する必要のある他のアプリケーションでopen
というコマンドを呼び出しました。これは、Eclipseから完全に正常に動作するか、エクスポートされた.jarをTerminal経由で起動した場合に動作します。ただし、.appをダブルクリックして起動した場合は機能しません。
Macのアプリはサンドボックス化されているので、アプリケーション内からopen
を呼び出すのはなぜですか何もない?
私は必要なアプリを開くために2つのアプローチを使用しました。これはスチームゲームですが、小売店としても提供されているため、アプリ自体またはsteam://
プロトコルを使用して起動できます。私のコードでは、私は次のことを試してみました:
ProcessBuilder pb = new ProcessBuilder("open", "steam://rungameid/57300//");
pb.start();
ProcessBuilder pb = new ProcessBuilder("open", appDir);
pb.start();
appDir
は、私が始めたいの.appバンドルへのパスを含む文字列です。
これはMacアプリケーションバンドルからは失敗しますが、Eclipse/Jarからうまく動作する理由は何ですか?コンソールでアプリケーションを実行すると(bashスクリプトによる)エラーは返されないので、Javaはコマンドをうまく実行するようですが、OS Xはおそらくそれを無視していますか?
私はGoogleでこれを検索してみましたが、おそらく非常に珍しい、または非常に具体的で、何も見つかりませんでした。
:私はここで私の他の質問には、より詳細な答えを書きましたか? – Black
ここでの答えで詳しく説明した 'Runtime.exec()'を使ってみましたか?http://stackoverflow.com/questions/19456454/how-do-i-launch-another-app-from-java-on-a -mac – Black
「appDir」には何を指定していますか? –