2017-02-13 94 views
2

我试图使用Heroku的与Java,我有这样的目录结构和我使用的IntelliJ:如何为heroku创建我的procfile文件?

target 
    com 
    x 
    y 
     Main.java 
在procfile

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。

回答

2

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目录中。

对于您将需要调整类路径,因为它使用了不同的布局(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创建Procfile.windows,然后使用heroku local web -f Procfile.windows命令在本地启动应用程序。

+0

查看我更新的帖子。我更新了我的proc文件,但我仍然收到错误 –

+0

@AbAppletic您究竟如何在本地或云中运行应用程序,使用了什么命令?你能提供'target/classes'中的文件列表吗? – CrazyCoder

+0

'heroku本地网络' –