ProcessBuilder не занимает всю командную строку.Он принимает аргументы.
Ваш текущий код ищет программу с базовым именем длиной 90 символов, например java -cp … Dog.exe
.
Вам необходимо передать массив аргументов:
// Note the use of a String array, not a single String
public static void runCode(String... javaArgs) {
List<String> args = new ArrayList<>();
args.add("java");
Collections.addAll(args, javaArgs);
ProcessBuilder processBuilder = new ProcessBuilder(args);
Это может быть вызвано как:
runCode(
"-cp",
"C:\\Program Files\\Apache Software Foundation\\Tomcat 8.5\\webapps\\Test\\classes",
"Dog");
Кроме того, не просто распечатывайте сообщение об исключении.Сообщение само по себе редко бывает полезным.Обычно вы хотите распечатать всю трассировку стека, чтобы иметь всю информацию и точно знать, где возникла проблема:
} catch (IOException ex) {
ex.printStackTrace();
}