Spring boot CLI отказывается работать в окне Git bash. Я добавил его в путь в Windows и работает из cmd. Ошибка в git bash:
$ spring
Error: Could not find or load main class org.springframework.boot.loader.JarLauncher
Spring boot CLI отказывается работать в окне Git bash. Я добавил его в путь в Windows и работает из cmd. Ошибка в git bash:
$ spring
Error: Could not find or load main class org.springframework.boot.loader.JarLauncher
Проблема возникает из-за того, что при попытке запустить jar Spring Boot CLI сценарий использует неверный путь к файлу для JAVA_HOME и для Classpath. При просмотре каталога bin установки spring вы можете увидеть два скрипта:
весна
spring.bat
Сценарий spring.bat выполняется при запуске из Windows CMD и будет работать нормально, однако при запуске в git bash будет использоваться сценарий spring. Этот сценарий попытается исправить проблему, используя cygpath
, чтобы убедиться, что пути к файлам указаны в формате unix. Он делает это только тогда, когда определяет, что работает в среде Cygwin, но не делает этого при запуске из git bash. В результате пути к файлам становятся неправильными.
К счастью, есть хак, который может решить эту проблему, если вы заинтересованы. Закомментируйте оператор if
в строках с 17 по 19 и добавьте его содержимое в виде отдельной строки, например так:
# if $cygwin ; then
# [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
# fi
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
И снова для другого оператора if
в строке 92:
# if $cygwin; then
# SPRING_HOME=`cygpath --path --mixed "$SPRING_HOME"`
# CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# fi
SPRING_HOME=`cygpath --path --mixed "$SPRING_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
Теперь вы сможете запускать CLI Spring Boot из git bash.
У меня была такая же проблема при запуске команды «spring» в git bash, я обнаружил, что моя весна была установлена на диске D (в то время как Java была установлена на диске C). При запуске команды «spring» в git bash в каталоге диска C я получаю указанную выше ошибку. Если я переключу каталог на диск D в git bash и снова запущу команду «spring», это сработает.