Scala Play 2.2应用程序在Heroku:target/start中部署后崩溃没有这样的文件或目录

Scala Play 2.2应用程序在Heroku:target/start中部署后崩溃没有这样的文件或目录,scala,heroku,deployment,scala-2.10,playframework-2.2,Scala,Heroku,Deployment,Scala 2.10,Playframework 2.2,我已经为此争论了好几个小时,我不明白为什么在Heroku部署Scala Play 2.2应用程序后,我得到了这个stacktrace: 2013-09-30T01:05:09.413177+00:00 heroku[web.1]: Starting process with command `target/start -Dhttp.port=18174 $PLAY_OPTS` 2013-09-30T01:05:10.931893+00:00 app[web.1]: bash: target/st

我已经为此争论了好几个小时,我不明白为什么在Heroku部署Scala Play 2.2应用程序后,我得到了这个stacktrace:

2013-09-30T01:05:09.413177+00:00 heroku[web.1]: Starting process with command `target/start -Dhttp.port=18174 $PLAY_OPTS`
2013-09-30T01:05:10.931893+00:00 app[web.1]: bash: target/start: No such file or directory
2013-09-30T01:05:12.382399+00:00 heroku[web.1]: Process exited with status 127
2013-09-30T01:05:12.414050+00:00 heroku[web.1]: State changed from starting to crashed
我尝试了几个Procfile版本,但没有成功,例如:

web: target/start -Dhttp.port=$PORT

web: target/start -Dhttp.port=$PORT $PLAY_OPTS

web: target/start -Dhttp.port=$PORT $JAVA_OPTS

web: target/start Web -Dhttp.port=$PORT $PLAY_OPTS

web: target/start -Dhttp.port=$PORT $PLAY_OPTS -Dconfig.file=application.conf

web: target/start -Dhttp.port=$PORT $PLAY_OPTS -Dconfig.file=conf/application.conf
我甚至试着不使用Procfile

我正在使用Scala 2.10.2和Play 2.2。在同一个Heroku应用程序中,我的项目的前一个版本在Play2.0上运行,我不知道这是否相关

该应用程序在本地运行得非常好。我连接到Heroku的聚会,然后跑了

sbt clean
sbt stage
我用手检查目标是否被清理并重新建造


“目标/开始:没有这样的文件或目录”指的是什么?目标?要启动命令吗?“播放2.2”更改了用于启动应用程序的文件的名称和位置

例如,要从项目文件夹启动项目“foo”的应用程序,请更新Procfile以运行:

target/universal/stage/bin/foo
请参阅,特别是连接到数据库部分。

我解决了以下问题(可能已经回答了,但以下是我的步骤)

在控制台中获得以下输出

forego | starting web.1 on port 5000
web.1  | /bin/bash: target/bin/Service: Permission denied
然后我做到了

$chmod 777 target/bin/Service
问题解决了

这里,服务是我的应用程序的名称(如pom.xml org.codehaus.mojo插件中指定的),下面是我的Procfile文件内容的样子

web: target/bin/Service -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}

我这样做了,它仍然说
target/universal/stage/bin/my-app-name-1234:在根目录中没有这样的文件或目录
,运行
play clean stage
。这将为您创建目标目录。然后将
cd
放入其中并找出其层次结构。继续检查,直到你发现你的应用程序名是什么。这真的帮助了我。这有助于解决target/universal/stage/bin/{app name}问题。这个答案看起来比较新,但在中似乎表明完全不同(
web:target/universal/stage/bin/myapp
),它对任何人都有帮助+1用于建议使用heroku本地网站进行本地测试。
web: target/bin/Service -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}