如何为heroku创建procfile文件?

时间:2017-02-13 19:33:58

标签: java heroku intellij-idea gradle procfile

我正在尝试使用Heroku和Java,我有这个目录结构,我正在使用IntelliJ:

target
  com
    x
     y
      Main.java
proc文件中的

web: java -cp target/classes/;target/dependency/* com.x.y.Main

当我尝试heroku local web时,我得到“Could not find or load main class com.x.y.Main

然而,它就在那里。我正在使用Windows。

1 个答案:

答案 0 :(得分:2)

Java类路径分隔符取决于平台,Windows为;,Unix为:

如果您尝试在Windows上运行heroku local,您的命令将会失败并显示您发布的消息。用以下代替:

web: java -cp target/classes/;target/dependency/* com.x.y.Main

将使其在Windows上运行。

如果您在云中部署的应用程序(即Unix)出现此错误,则com.x.y.Main目录中没有target/classes类。您可以通过运行heroku run bash后跟ls -lR并检查服务器上的目录/文件布局来验证这一点。

如果您在Windows上运行,请确保运行mvn clean install以将源代码编译到target/classes目录。

对于基于Gradle的项目,您需要调整类路径,因为它使用不同的布局(build/classes)或build/libs中的jar文件,see the guide for the details

web: java -jar build/libs/myprojectname-1.0-SNAPSHOT.jar

要使其在云端和Windows上工作而不必每次更改Procfile,请使用Procfile.windows创建web: java -cp target/classes/;target/dependency/* com.x.y.Main并在本地使用heroku local web -f Procfile.windows命令启动应用。