【问题标题】:Error while deploying Spring boot app to Heroku将 Spring Boot 应用程序部署到 Heroku 时出错
【发布时间】:2020-12-01 01:22:00
【问题描述】:

我在将 Spring Boot 应用程序部署到 Heroku 时遇到问题。

  • 我正在尝试将其部署为 java 应用程序,而不是构建和部署 jar 文件。
  • 我在 Heroku 中使用过免费的 Postgresql。

将应用推送到 Heroku master 时的错误是:

remote:        [INFO] Changes detected - recompiling the module!
remote:        [INFO] Compiling 18 source files to /tmp/build_79201803/target/classes
remote:        [INFO] -------------------------------------------------------------
remote:        [ERROR] COMPILATION ERROR :
remote:        [INFO] -------------------------------------------------------------
remote:        [ERROR] /tmp/build_79201803/src/main/java/com/pukitbanta/springblog/model/post.java:[15,8] class Post is public, should be declared in a file named Post.java
remote:        [ERROR] /tmp/build_79201803/src/main/java/com/pukitbanta/springblog/model/user.java:[12,8] class User is public, should be declared in a file named User.java
remote:        [INFO] 2 errors
remote:        [INFO] -------------------------------------------------------------
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] BUILD FAILURE
remote:        [INFO] ------------------------------------------------------------------------
remote:        [INFO] Total time:  16.300 s
remote:        [INFO] Finished at: 2020-08-11T11:09:38Z
remote:        [INFO] ------------------------------------------------------------------------
remote:        [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project springblog: Compilation failure: Compilation failure:
remote:        [ERROR] /tmp/build_79201803/src/main/java/com/pukitbanta/springblog/model/post.java:[15,8] class Post is public, should be declared in a file named Post.java
remote:        [ERROR] /tmp/build_79201803/src/main/java/com/pukitbanta/springblog/model/user.java:[12,8] class User is public, should be declared in a file named User.java
remote:        [ERROR] -> [Help 1]
remote:        [ERROR]
remote:        [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
remote:        [ERROR] Re-run Maven using the -X switch to enable full debug logging.
remote:        [ERROR]
remote:        [ERROR] For more information about the errors and possible solutions, please read the following articles:
remote:        [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
remote:
remote:  !     ERROR: Failed to build app with Maven
remote:        We're sorry this build is failing! If you can't find the issue in application code,
remote:        please submit a ticket so we can help: https://help.heroku.com/
remote:
remote:  !     Push rejected, failed to compile Java app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:

这里的错误指定我的UserPost模型文件名以小写字母开头。

但我的文件结构是:

我认为错误不在模型中,我无法找出问题所在。

【问题讨论】:

  • 你能分享文件的内容吗? (Post/User.java)
  • Post/User 的内容不是问题,但 GitHub 中存储的文件是小写的。所以,我刚刚将 core.ignorecase 的文件名更新为 false 并解决了这个问题。

标签: spring spring-boot maven spring-data-jpa


【解决方案1】:

我通过将 java 版本 11 更改为 8(在 pom.xml 中)解决了我的问题。

发件人:

<properties>
        <java.version>11</java.version>
</properties>

收件人:

<properties>
    <java.version>8</java.version>
</properties>

【讨论】:

    【解决方案2】:

    在您的屏幕截图中,文件名以大写字母开头,但是

    remote:        [ERROR] /tmp/build_79201803/src/main/java/com/pukitbanta/springblog/model/post.java:[15,8] class Post is public, should be declared in a file named Post.java
    remote:        [ERROR] /tmp/build_79201803/src/main/java/com/pukitbanta/springblog/model/user.java:[12,8] class User is public, should be declared in a file named User.java
    

    错误信息中显示的文件名是小写的。

    请再次检查小写字母。如果是小写,请按如下方式更正:

    • post.java 重命名为Post.java
    • user.java 重命名为User.java

    如果重命名这些文件没有意义,则可能是您的 Git 设置有问题。

    见:https://stackoverflow.com/a/46670520/1979953

    这是一个区分大小写的问题。问题是我不知道 GIT 不是在文件中寻找区分大小写的更改。

    你可以检查你的 git 配置:

    $ git config -l | grep ignorecase
    

    core.ignorecase 是我们这次需要的。

    如果core.ignorecasetrue,Git 将忽略大小写差异;如果false,Git 会识别出差异。所以你需要设置false

    然后让 Git 识别更改并再次将它们部署到 Heroku。

    要将 core.ignorecase 更新为 truefalse 运行:

    git config core.ignorecase true

    git config core.ignorecase false.

    【讨论】:

    • 嘿,谢谢,我将 core.ignorecase 更新为 false,它解决了我的问题
    猜你喜欢
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2018-06-28
    • 2015-09-22
    • 2017-09-14
    • 2015-12-09
    相关资源
    最近更新 更多