OS X 10.8 の場合はこちら、OS X 10.7 の場合はこちらで説明されているように、唯一の完全な解決策は in を設定することPATH
です/etc/launchd.conf
。
デフォルトでは、がまったくない場合でも、 PATH
for Applications は に設定されています。/usr/bin:/bin:/usr/sbin:/sbin
/etc/launchd.conf
したがって、端末で次のことを行う必要があります。
sudo vi /etc/launchd.conf
次の行を追加するか、既に存在する場合は変更します。
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
重要: Mac を再起動する必要があります。
PATH
次のコードを使用して、Java アプリケーションで を再現できます。
public class Main {
public static void main (String[] args) {
System.out.println("PATH=" + System.getenv().get("PATH"));
}
}
2 番目の解決策があります。Eclipse などの IDE 内からプログラムを起動する場合は、そこで PATH を設定することもできます。Run | Run Configurations | Environment
Eclipseでは、左側のサイドバーの下にある起動構成を選択しながら、それを行うことができますJava Application
。
私は次のコードでそれを再現し、別名、Java アプリが起動された現在のディレクトリにimage.jpg
配置しました。${user.dir}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Main {
public static void main (String[] args) {
System.out.println("PATH=" + System.getenv().get("PATH"));
try {
Process exec = Runtime.getRuntime().exec("identify image.jpg");
InputStream is = exec.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
上記のコードを実行すると、次のような出力が得られるはずです。
PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
image.jpg JPEG 690x518 690x518+0+0 8-bit sRGB 152KB 0.000u 0:00.000
最初の出力行PATH
には、現在実行している Java アプリケーションが表示されます。2 番目の出力行はidentify image.jpg
.
注: Mac OS X 10.8.2 および MacPorts 2.1.3 を実行しています。
注: Mac OS X 10.8 より前のバージョンでは、ユーザーベースを使用してユーザーにグローバル変数を設定する方法がありました~/.MacOSX/environment.plist
。しかし、これは Mountain Lion (別名 Mac OS X 10.8) 以降では機能しなくなりました。詳細はこちらで確認できます: