2016-07-20 5 views
0

パラメータを送信し、Javaコードからバッチファイルを実行する必要があります。私は、このメソッドを使用:Java戻りエラーでバッチを実行

private void run(){ 
     if (atmUsernameField.getText().length() > 0 && 
      atmPasswordField.getText().length() > 0 && 
      serverURLField.getText().length() > 0){ 

      String atmUsername= atmUsernameField.getText(); 
      String atmPassword = atmPasswordField.getText(); 
      String url = serverURLField.getText(); 
      String userHomePath = System.getProperty("user.home"); 
      userHomePath = userHomePath + File.separator + "INFOKIOSK" + File.separator + "device_jar"; 
      String fileName = userHomePath + File.separator + "restart.bat"; 
      if (SystemUtils.IS_OS_WINDOWS_XP || SystemUtils.IS_OS_WINDOWS) { 
       try { 
        String processID = ManagementFactory.getRuntimeMXBean().getName(); 
        int endIndex = processID.indexOf("@"); 
        processID = processID.substring(0, endIndex); 
        new ProcessBuilder("cmd", "/c", "start " + fileName, processID, atmUsername, atmPassword, url).start(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 

これはrestart.batです:

TASKKILL /F /PID %1 /T 
cd /d %~dp0 
java -jar device.jar --atm.autoload.page=%4 --atm.username=%2 --atm.password=%3 -debug 

PID = PROCESSID 最初に殺されたプロセスでrestart.bat必要と彼は とランニング置かれている場所フォルダに移動しますパラメータを持つdevice.jar。 Windows 7マシンでこのコードを実行すると、コードが実行されます。 Windows XP SP3マシンで実行している場合、「Not Found C:\ Documents ...」というエラーが返されます。 Windows XPマシンでこのコードを実行する必要があります。どこでエラーが発生するのですか。なぜコードが機能しないのですか?

+0

まあ...」 C:\ Documents ...が見つかりません "というメッセージが表示されます。あなたのファイルは「Documents \ My Documents」かもしれませんが、そのスペースはJavaが「Documents \ My」と見なすことを意味します。 – Stultuske

+0

@Stultuske私はパス "C:\ Documents"を使用しませんでした。ファイルはディレクトリ:user.home \ INFOKIOSK \ device_jar \ restart.batにあります。ただ、古いバージョンのアーティファクトでは、私はこのパスを使いました。そのキャッシュがジョブを妨げるものがあるかもしれません – Saahon

答えて

0

userHomePathにはwinXPのスペースが含まれています。 Win7ではもうそれはありません。

てみてください以下に示し、それはどちらかの環境で動作するように引用符を追加する:

new ProcessBuilder("cmd", "/c", "start \"" + fileName + "\"", processID, atmUsername, atmPassword, url).start(); 

たぶん、あなたはあなたの.batに引用符を追加する必要がありますあまりにも

cd /d "%~dp0" 
+0

ありがとう、はい、WinXPのuserHomePath: "C:\ Documents and Settings \ Username \" - >この出力エラー "Not Found C:\ Documents" – Saahon

関連する問題