Heroku,Java,Procfile,无法找到或加载主程序 class

Heroku, Java, Procfile, Could not find or load main class

我将 heroku 与 maven 一起用于 运行 服务器。我的目标是让 heroku 运行 the java class server.class 作为一个 web dyno。

如何编写一个 procfile 来以 Web 方式执行 java 程序 server.class?


我当前的 Procfile

web: java -cp $JAVA_OPTS target/classes/v1/a1/server

我的错误。(来自 heroku 日志)

Picked up JAVA_TOOL_OPTIONS: -Xmx350m -Xss512k -Dfile.encoding=UTF-8
Error: Could not find or load main class target.classes.v1.a1.server
State changed from starting to crashed


可能有用的信息

procfile

web: java -cp $JAVA_OPTS target/classes/v1/a1/*

Returns

Error: Could not find or load main class target.classes.v1.a1.myOtherClass

我原来的 Procfile(也没有用)

web: java -cp target/classes/:target/dependency/* server

我认为你的 Procfile 应该包含:

web: java -cp target/classes/:target/dependency/* v1.a1.server

假设如下:

  • 你的serverclass在文件target/v1/a1/server.class
  • 您的 server class 的 Java 代码包括 package v1.a1;
  • 您的 class 名称和文件名是小写的。

我在您之前的尝试中注意到的一些问题包括:

  • 您将 $JAVA_OPTS 传递给 -cp 选项(不正确)
  • 您在完全限定的 class 名称中使用 / 而不是 .(不正确)
  • 您在完全限定的 class 名称中包含了 target 目录(不正确)

target/classes/target/dependency/ 目录中的文件属于 class 路径(即传递给 -cp),而 [=24= 的最后一个参数] 命令应该是完全限定的 class 名称(格式为 package.Class)。

heroku 的默认 Procfile 是为 Linux 编写的。使用的分隔符是“:”。

要在 Windows 台机器上使用 Procfile,请按以下方式修改 Procfile

web: java -cp target/classes/;target/dependency/* com.yourpackage.MainClassName