我正在尝试使用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。
答案 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
命令启动应用。