
OS X Mavericks でアプリを実行するのに苦労していました。.app バンドルにドリルダウンしてシェル スクリプトを直接実行することで、ようやく実行できるようになりました。JAVA_HOME を設定する必要があったようです。そこで、シェルの .profile で設定したところ、すべて正常に動作しました。
しかし、ドックのアイコンをクリックしただけでは実行されません。これは、JAVA_HOME がグローバルに設定されていないためだと思います。シェルから直接アプリを実行していないため、OS X は JAVA_HOME が何であるかを知りません。ただ探し続けるだけです。
以前のバージョンの OS X では、環境変数を /etc/launchd.conf に追加するだけで GUI アプリケーションに設定できたようです。このファイルは Mavericks には存在しないようです。Mavericks で GUI アプリケーションに機能するグローバル環境変数を設定するにはどうすればよいでしょうか?
答え1
/etc/launchd.conf
デフォルトでは存在しませんでしたが、10.9 でも動作します。
- たとえば実行します
sudo nano /etc/launchd.conf
。 - のような行を追加します。(ただし、実際に何を設定すればよい
setenv JAVA_HOME /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
かはわかりません。)JAVA_HOME
- プロセスを再起動するか、実行し
launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
て再起動します。
launchctl export
ユーザーの launchd プロセスによってエクスポートされた変数を出力し、sudo launchctl export
ルートの launchd プロセスによってエクスポートされた変数を出力します。
このメソッドは、デフォルトのパスを設定するためにも使用できます。たとえば、次の行を追加しました/etc/launchd.conf
:
setenv PATH /Users/lauri/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
( はroot として実行されるプログラム用なので、の/Users/lauri/bin
代わりにを使用しました。)~/bin
~/bin
/var/root/bin
答え2
Launchd.conf は Mac OS 10.10 以降では動作せず、使用できなくなりました。
これを実現する正しい方法は、起動時に読み込まれる LaunchAgent スクリプトを使用することです。これらのスクリプトは恐ろしく面倒なので (個人的な意見ですが)、.bash_profile を使用してこれらのスクリプトを自動的に作成/更新することを好みます。
.bash_profile からこれを実現する簡単な方法については、この SO の回答を試してみてください。これで、新しい Mac M2 で (再び) 解決しようとして費やした数時間を節約できると思います。