ProcessBuilder経由でMopidyを起動するJavaアプリケーションがあります。 これは私のコードです:私は、構築された.jarファイルを実行すると、私は、NetBeansからそれを実行したときに奇妙なことがあり、出力はMopidyコマンドが見つからないと言うProcessBuilderはコマンドを見つけることができませんが、端末で見つかる可能性があります。
if(mopidy==null){
try {
btnStartMopidy.setDisable(true);
btnStopMopidy.setDisable(false);
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", "mopidy");
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
mopidy = pb.start();
} catch (IOException ex) {
ex.printStackTrace();
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
}
、しかし...
端末を介して、私は予想されるMopidyの出力を得る。 .jarファイルをダブルクリックして実行すると、コマンドが見つからないという同じエラーが表示されます。
どのような考えですか?
EDIT:
私はプログラムを呼び出す代わりに、直接のはbash -cを使用してみました。
ProcessBuilder pb = new ProcessBuilder("/usr/local/bin/mopidy");
これでMopidyが見つかるようですが、別のエラーが発生しています。あるPythonパッケージ(Mopidyに必要なGStreamer)は、インストールされていても見つかりません。
あなたの 'PATH'はおそらく異なります。また、プログラムを直接呼び出すのではなく、 '-c'を実行する理由は何ですか? – fge
実際には、私がアプリケーションの作業を開始したとき、これはすでにこのようでした。更新された質問を参照してください。 –
これは間違いなくあなたの環境の問題です。 ['System#getEnv'](http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#getenv--)のすべてをダンプして、それをあなたのシェルはあなたに伝えます。 – fge