【问题标题】:Spring boot CLI doesn't work on Git Bash on windowsSpring boot CLI 在 Windows 上的 Git Bash 上不起作用
【发布时间】: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


    【解决方案1】:

    我在 git bash 中运行“spring”命令时遇到了同样的问题,我发现我的 spring 安装在 D 盘上(而 Java 安装在 C 盘上)。在 C 盘目录的 git bash 中运行“spring”命令时,会出现上述错误。如果我在 git bash 中将目录切换到 D 盘并再次运行“spring”命令,它将起作用。

    【讨论】:

      【解决方案2】:

      出现此问题的原因是,在尝试运行 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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-20
        • 2012-08-01
        • 2022-10-24
        • 1970-01-01
        • 1970-01-01
        • 2019-01-29
        相关资源
        最近更新 更多