Linux で見つけた Java コードを実行しようとしています。
maudecmd = new String[files.length+5];
maudecmd[0] = "maude";
maudecmd[1] = "-no-banner";
maudecmd[2] = "-no-ansi-color";
maudecmd[3] = "-no-mixfix";
maudecmd[4] = "-no-wrap";
for(int i = 0; i < files.length; ++i) {
maudecmd[5+i] = files[i];
}
ProcessBuilder pb = new ProcessBuilder(maudecmd);
if(dir != null)
pb.directory(dir);
pb.redirectErrorStream(true);
maude = pb.start();
これにより IOException がスローされます - bash は「maude」コマンドを見つけることができません。
ただし、これは .bashrc ファイルでエイリアスされています。
alias maude='~/lib/maude/maude.linux'
次のようにコードを変更すると:
maudecmd[0] = "/u/h/os215/lib/maude/maude.linux";
それは正常に動作します。
このコードを変更して、より堅牢にしたいと考えています。誰かがコマンド ラインで Maude を実行できる場合、ユーザーが Maude をリンクする特定の方法が何であれ、ProcessBuilder もそれを使用できるはずです。
これは達成できますか?