Scala Слушать 2.2 сбой приложений после развертывания в Heroku: target/start Нет такого файла или каталога

Я боролся с этим в течение нескольких часов, и я не могу понять, почему после развертывания моего приложения Scala Play 2.2 в Heroku я получаю этот стек:

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 у меня была предыдущая версия моего проекта, запущенного в Play 2.0, я не знаю, связано ли это.

Приложение работает отлично на месте. Я подключился к bash в Heroku и запустил

sbt clean
sbt stage

и я проверил, что цель очищается и строится снова.

Что означает "цель/старт: нет такого файла или каталога"? К цели? К началу команды? Что-то еще?

Ответ 1

Play 2.2 изменило имя и расположение файла, используемого для запуска вашего приложения.

http://www.playframework.com/documentation/2.2.x/Production

Например, чтобы запустить приложение проекта foo из папки проекта, обновите файл Procfile для запуска:

target/universal/stage/bin/foo

Ответ 3

Я решил это следующим образом (возможно, уже ответил, но вот мои шаги)

$ heroku local web

Получает следующий вывод в консоли

forego | starting web.1 on port 5000
web.1  | /bin/bash: target/bin/Service: Permission denied

Тогда я сделал

$chmod 777 target/bin/Service

и проблема решена.

Здесь 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}