将Spring Boot应用程序部署到Heroku时出错

问题描述

将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,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模型文件名以小写字母开头。

但是我的文件结构是:

File Structure for the models

我认为模型中没有错误,并且无法找出问题所在。

解决方法

在屏幕快照中,文件名以大写字母开头,但是

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

,

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

来自:

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

致:

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...