パラメータを送信し、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マシンでこのコードを実行する必要があります。どこでエラーが発生するのですか。なぜコードが機能しないのですか?
まあ...」 C:\ Documents ...が見つかりません "というメッセージが表示されます。あなたのファイルは「Documents \ My Documents」かもしれませんが、そのスペースはJavaが「Documents \ My」と見なすことを意味します。 – Stultuske
@Stultuske私はパス "C:\ Documents"を使用しませんでした。ファイルはディレクトリ:user.home \ INFOKIOSK \ device_jar \ restart.batにあります。ただ、古いバージョンのアーティファクトでは、私はこのパスを使いました。そのキャッシュがジョブを妨げるものがあるかもしれません – Saahon