Spring 引导 CLI 在 Git Bash 和 windows 上不起作用

Spring boot CLI doesn't work on Git Bash on windows

Spring 启动 CLI 拒绝在 Git bash window 上 运行。我已将它添加到 windows 中的路径并从 cmd 运行。 git bash 中的错误是:

$ spring Error: Could not find or load main class org.springframework.boot.loader.JarLauncher

问题的发生是因为在尝试 运行 Spring Boot CLI jar 时,脚本使用了 JAVA_HOME 和类路径的格式错误的文件路径。查看 spring 安装的 bin 目录时,您可以看到两个脚本:

spring
spring.bat

当您从 windows CMD 运行 时执行 spring.bat 脚本并且可以正常工作,但是当 运行ning 在 git bash 它将使用 spring 脚本。此脚本将尝试使用 cygpath 来更正此问题,以确保文件路径为 unix 格式。它仅在确定它在 Cygwin 环境中 运行ning 时执行此操作,但在 运行ning 从 git bash。结果文件路径变得畸形。

幸运的是,如果您有兴趣,可以使用 hack 解决此问题。注释掉第 17 到 19 行的 if 语句,并将其内容添加为单独的一行,如下所示:

# if $cygwin ; then
#   [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
# fi
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`

第 92 行的另一个 if 语句:

# 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"`

您现在可以从 git bash 运行 Spring 启动 CLI。

我在 运行 在 git bash 中使用 "spring" 命令时遇到了同样的问题,我发现我的 spring 安装在 D 驱动器上(而 Java 安装在 C 盘上)。当运行在C盘目录gitbash中执行"spring"命令时,会出现上述错误。如果我在gitbash和运行中再次将目录切换到D盘"spring"命令,它就可以了。