我正在尝试将 Heroku 与 Java 结合使用,我有这个目录结构并且我正在使用 IntelliJ:
target
com
x
y
Main.java
在 proc 文件中:
web: java -cp target/classes/;target/dependency/* com.x.y.Main
当我尝试 heroku local web
时,我得到“无法找到或加载主类 com.x.y.Main
”
但是,它就在那里。我使用的是 Windows。
最佳答案
Java 类路径分隔符与平台相关,对于 Windows 为 ;
,对于 Unix 为 :
。
如果您尝试在 Windows 上运行 heroku local
,您的命令将失败,并显示您发布的消息。替换为:
web: java -cp target/classes/;target/dependency/* com.x.y.Main
将使其在 Windows 上运行。
如果您在云(Unix)中部署的应用程序遇到此错误,则 target/classes
目录中不存在 com.x.y.Main
类。您可以通过运行 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,请使用 web: java -cp target/classes/;target/dependency/* com. x.y.Main
并在本地使用 heroku local web -f Procfile.windows
命令启动应用程序。
关于java - 如何为 heroku 创建 procfile 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42212111/