1

Javaを使用してSQLスクリプトを実行したいJavaプログラムは次のとおりです。

import java.io.*;
public class script{

public static void main(String argv[]) {

try {
  String line;
  Process p = Runtime.getRuntime().exec ("psql -U mit -d d980 -h tpeux250.sgp.st.com -f C:/java program/script.sql");
  BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream()));

  while ((line = input.readLine()) != null) {        
    System.out.println(line);
  }
  input.close();
} catch (Exception err) {
  err.printStackTrace();
}

}

しかし、私は次のエラーが発生しています

java.io.IOException:Cannot run program "psql": CreateProcess error=2, The system cannot find the file specified
       at java.lang.ProcessBuilder.start<Unknown Source>
       at java.lang.Runtime.exec<Unknown Source>
       at java.lang.Runtime.exec<Unknown Source>
       at java.lang.Runtime.exec<Unknown Source>
       at script.main<script.java:8>
4

3 に答える 3

2

psql実際のバイナリがある場所は、PATH環境変数にはありません。

確認するには、ターミナルから次のコマンドを実行します。

echo %PATH%

psql binディレクトリが見つからない場合は、次のようにパスに追加します

set PATH = %PATH%;"C:\Program Files\PostgreSQL\9.2\bin"

psqlターミナルからスクリプトを再度実行してみてください。これで問題が解決した場合は、binディレクトリを永続的に追加します (Java プログラムが別の端末で実行されているため、追加する必要があります)。

[マイ コンピューター] > [プロパティ] > [システムの詳細設定] (左側のペイン)。下部にある [環境変数] を選択し、PATH を変更して、「;」の後に psql の「bin」ディレクトリを追加します。最後に。

于 2013-06-11T11:47:54.927 に答える
0

Java からコマンドを実行する前に、ターミナルで実行してみてください。C:/java プログラムが表示され、それが Windows であることを期待して、実行 (windows+R) して実行しcmdます。ターミナルでコマンドを実行してみてください。Windows では、スラッシュの代わりにバック スラッシュを試してください

C:\>cd "c:\Program Files"

成功しているのに対し

 C:\Program Files>cd "c:/Program Files"
    The system cannot find the path specified.

ではありません。だから使うC:\java program\script.sql

于 2013-06-11T11:51:09.877 に答える
-2

これを使って

Process p = Runtime.getRuntime().exec ("cmd.exe /c psql -U mit -d d980 -h tpeux250.sgp.st.com -f C:/java program/script.sql");
于 2013-06-11T11:47:30.163 に答える