Я пытаюсь запустить Java-процесс, используя Go, но я не могу заставить Java распознавать classpath. Код выглядит примерно так:
args := []string{
"-Xmx64m",
"-Dmy.property=value,
"-cp",
"lib/jar1.jar:lib/jar2.jar",
"com.things.MyClass",
}
c := exec.Command(javaBinary, args...)
К сожалению, при выполнении этого я получаю страшную Error: Could not find or load main class
из JVM. Однако, если я беру вывод из c.Args
и запускаю его непосредственно в терминале, он, кажется, работает очень хорошо, что для меня означает, что я каким-то образом запускаю процесс неправильно.
Есть ли лучший способ сделать это?
Не обращайте внимания на этот вопрос, ошибка была лишним пространством в массиве args:
args := []string{
"-Xmx64m",
"-Dmy.property=value ", //<--trailing space
...
}
Дополнительное пространство останавливает дальнейший синтаксический анализ от продолжения, ведущего к отсутствующему пути к классам.