将Spring Boot应用程序部署到Heroku时遇到问题。
将应用程序推送到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:
这里的错误表明我的User
和Post
模型文件名以小写字母开头。
但是我的文件结构是:
我认为模型中没有错误,并且无法找出问题所在。
答案 0 :(得分: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.ignorecase
是true
,Git将忽略大小写差异;如果false
,Git将识别出差异。因此,您需要设置false
。
然后让Git识别更改并将其再次部署到Heroku。
要将core.ignorecase更新为true
或false
,请运行:
git config core.ignorecase true
或
git config core.ignorecase false
。
答案 1 :(得分:2)
我通过将 java 版本 11 更改为 8(在 pom.xml 中)解决了我的问题。
来自:
<properties>
<java.version>11</java.version>
</properties>
致:
<properties>
<java.version>8</java.version>
</properties>