Запуск инструмента Java с помощью cmd.exe - PullRequest
0 голосов
/ 24 января 2011

Я пытаюсь запустить инструмент командной строки Java в своем собственном окне cmd.exe из Java. Я использую ProcessBuilder для запуска следующего:

cmd.exe /k "C:\Program Files (x86)\JavaSoft\jre\1.5.0_07\bin\java.exe"

Это работает. Это также работает:

cmd.exe /k "C:\Program Files (x86)\JavaSoft\jre\1.5.0_07\bin\java.exe" -version

Но когда я пытаюсь запустить следующее

cmd.exe /k "C:\Program Files (x86)\JavaSoft\jre\1.5.0_07\bin\java.exe" "test a"

Я получаю сообщение о том, что не могу найти "C: \ Program". Я ожидал получить исключение из java.exe. Мне нужно уметь использовать кавычки в некоторых аргументах. Есть ли способ сделать это?

Ответы [ 4 ]

2 голосов
/ 24 января 2011

Из "cmd /?":

  1. Если соблюдены все следующие условия, символы кавычек в командной строке сохраняются:

    • нет переключателя S /
    • ровно два символа кавычки
    • без специальных символов между двумя символами кавычки, где специальным является один из: & <> () @ ^ |
    • между двумя символами кавычек есть один или несколько пробельных символов
    • строка между двумя символами кавычек является именем исполняемого файла.
  2. В противном случае,старое поведение состоит в том, чтобы увидеть, является ли первый символ символом кавычки, и если это так, убрать начальный символ и удалить последний символ кавычки в командной строке, сохранив любой текст после последнего символа кавычки.

Хорошо, это объясняет, почему это не работает, если есть более двух кавычек.Но это не объясняет, как именно решить проблему.К счастью, у Google есть ответ :

cmd.exe /k ""d:\laj soft\java.exe" "test a""
0 голосов
/ 24 января 2011

Если у вас есть контроль над тем, где установлен JDK, рекомендуется установить его в месте, где нет пробелов.«Program Files» - это расположение по умолчанию в Windows, но оно почти всегда приводит к проблемам.

0 голосов
/ 24 января 2011

Вы можете попробовать использовать старый трюк DOS для этого.Обратитесь к программным файлам как к программе ~ 1.Это обычно помогает мне решить проблему.

0 голосов
/ 24 января 2011

Попробуйте следующее:

java -jar your_jar_archive.jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...