我的应用程序在本地运行得非常好,并且是与Heroku一起部署的,但是我很难构建一个Procfile来声明应该执行什么命令来启动应用程序。我是一个新开发人员,可以在Linux进程模型的工作方式方面得到一些帮助。
Heroku文档为Java项目提供了两个Procfile示例:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/demo-0.0.1-SNAPSHOT.jar
web: java $JAVA_OPTS -cp target/classes:target/dependency/* com.example.HelloWorld
我决定尝试遵循-cp示例,因为我没有任何.jar文件。
这是我现在的过程文件:
web: java $JAVA_OPTS -cp gradlew java/com/deepdraft/deep_draft/DeepDraftApplication.java 前文件
在最近的一次开发人员采访中,我简短地询问了Procfile的情况,他建议我在编写Procfile时引用我的"gradlew“文件,但是我没有机会询问是从这个文件复制命令还是将Procfile指向文件中的命令。作为猜测,我选择了"gradlew“文件复制到当前Procfile中的主类中。下面是在gradlew文件底部收集的参数。gradlew
我尝试通过引用(com.deepdraft.deep_draft.DeepDraftApplication)和路径(java/com/deepdraft/deep_draft/DeepDraftApplication.java).将主类放入Procfile中。这两个过程文件都会产生一个日志,上面写着“错误:找不到或加载主类”。这是一张完整日志的照片。日志
但老实说,我不知道Procfile为什么需要我编写一个脚本,将文件从一个目录复制到另一个目录。我只是尝试一下,因为Heroku文档使用这个Procfile作为SpringBoot项目的示例。
对不起,如果这个信息是到处都是,但我是一个新的开发人员,谁非常兴奋地部署我的第一个应用程序。如何构建过程文件?
(编辑)好的,实际上我找到了一个jar文件!我在终端中使用".jar“而不是"jar”,并找到了一个gradlewrapper.jar文件。我将尝试使用这个文件来遵循上面的第一个Procfile示例,使用-jar命令。gradlewrapper.jar
(编辑2)哇,我感觉我离得太近了。得到一条新的错误消息是令人兴奋的。哈哈。它说“.jar文件中没有主清单属性”。新原木我发现了关于添加一个清单属性的这堆栈溢出会话,但是我无法编辑这个压缩的文件,而且我拥有的最类似于开发人员文件的文件(包含所有依赖项)是保存在我的build.gradle文件中的数据。build.gradle文件,我将尝试编辑.jar文件,但任何评论都将不胜感激!
发布于 2021-07-04 18:18:16
heroku引用的jar文件是项目的可执行jar文件。现在有两个案件:
发布于 2022-04-06 18:58:06
您还可以在项目根目录上创建名为Procfile的文件,并放入以下一行:web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/nameOfMyApp-0.0.1-SNAPSHOT.jar
https://stackoverflow.com/questions/67477131
复制相似问题