【发布时间】:2018-01-15 23:55:40
【问题描述】:
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 git-bash
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 git-bash
我在 git bash 中运行“spring”命令时遇到了同样的问题,我发现我的 spring 安装在 D 盘上(而 Java 安装在 C 盘上)。在 C 盘目录的 git bash 中运行“spring”命令时,会出现上述错误。如果我在 git bash 中将目录切换到 D 盘并再次运行“spring”命令,它将起作用。
【讨论】:
出现此问题的原因是,在尝试运行 Spring Boot CLI jar 时,脚本同时使用了 JAVA_HOME 和 Classpath 的格式错误的文件路径。查看spring安装的bin目录可以看到两个脚本:
春天
spring.bat
当你从 windows CMD 运行时会执行 spring.bat 脚本并且可以正常工作,但是在 git bash 中运行时它将使用 spring 脚本。此脚本将尝试通过使用cygpath 来更正该问题,以确保文件路径为 unix 格式。它仅在确定它在 Cygwin 环境中运行时才执行此操作,但在从 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 Boot CLI。
【讨论】: