Запустить пакет с ошибкой возврата 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

restart.bat нужно сначала убить процесс, где PID = processID и перейти в папку, где находится он, и запустить device.jar с параметрами. Когда я запускаю этот код на компьютере под управлением Windows 7, код работает. Если запущена на Windows XP SP3 ошибка возврата машины "Not Found C:\Documents...." Мне нужно запустить этот код на компьютере под управлением Windows XP. где ошибка, почему код не работает?

0
20 июля '16 в 16:45
источник поделиться
1 ответ

userHomePath содержит пробелы на winXP. На Win7 этого больше нет.

Попробуйте добавить кавычки, как показано ниже, он будет работать в любой среде:

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

Возможно, вам нужно будет добавить кавычки в свой.bat тоже

cd /d "%~dp0"
0
22 июля '16 в 15:37
источник

Посмотрите другие вопросы по меткам или Задайте вопрос