スクリプトを実行する runshellscript メソッドを呼び出す Java クラスがあります。mysql ではうまくいきましたが、psql ではうまくいかない理由がわかりません。これが私のrunshellメソッドの抜粋です
public static void runShellScript (String unixCommand)
{
try {
Runtime runtime=Runtime.getRuntime();
Process process=runtime.exec(new String [] { "/bin/csh", "-c", unixCommand});
InputStream stderr=process.getErrorStream();
InputStreamReader isr=new InputStreamReader (stderr);
BufferedReader br=new BufferedReader (isr);
String line=null;
System.out.println("<ERROR>");
while((line=br.readLine())!=null)
System.out.println(line);
System.out.println(line);
int exitVal=process.waitFor();
System.out.println("Process exitValue:" + exitVal);
}
catch (Throwable t)
{
t.printStackTrace();
}
問題は、これをマウスクリックイベントの背後に置くと、コマンドが見つからないということです。マウスイベントのコードは次のとおりです
private void jMenuItem6MousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
String shellCommand="/vobs/tools/DataValidation/mysqlconnection.csh";
// RunShellScript run=new RunShellScript();
RunShellScript.runShellScript(shellCommand);
}
奇妙なことは、スクリプトが存在するディレクトリに直接移動し、./mysqlconnection と入力すると、スクリプトが機能することです。しかし、mysqlconnection と入力すると、コマンドが見つからないというメッセージが表示されます。どういうわけか、スクリプト名がコマンドとして認識されませんか?