2013-09-30 9 views
10

Walczyłem z tym od wielu godzin i nie mogę zrozumieć, dlaczego po wdrożeniu mojej aplikacji Scala Play 2.2 w Heroku otrzymuję to StackTrace:Scala Play 2.2 awarie aplikacji po wdrożeniu w Heroku: target/start Brak takiego pliku lub katalogu

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 

próbowałem kilka Procfile wersje bez powodzenia, niektóre przykłady:

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 

próbowałem nawet przy użyciu żadnego Procfile.

Używam Scala 2.10.2 i Play 2.2. W tej samej aplikacji Heroku miałem poprzednią wersję mojego projektu uruchomionego w Play 2.0, nie wiem, czy jest to powiązane.

Aplikacja działa idealnie lokalnie. Podłączyłem się do bata w Heroku i ręcznie wykonałem ręcznie, a ja sprawdziłem, czy cel zostanie oczyszczony i zbudowany ponownie.

Co oznacza "cel/początek: brak takiego pliku lub katalogu"? Do celu? Do polecenia start? Do czegoś innego?

Odpowiedz

21

Zagraj 2.2 zmienił nazwę i lokalizację pliku, do którego uruchomienia aplikacja

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

Na przykład, aby uruchomić aplikację projektu „foo” z folderu projektu, zaktualizuj Procfile do run:

target/universal/stage/bin/foo 
+1

Zrobiłem tak i nadal mówi 'target/universal/stage/bin/my-app-name-1234: Brak takiego pliku lub katalogu' –

+1

W katalogu głównym uruchom 'play clean stage'. Spowoduje to utworzenie katalogu docelowego. Następnie wystarczy "cd" do niego i dowiedzieć się jego hierarchii. Po prostu sprawdzaj, aż odkryjesz nazwę swojej aplikacji. To naprawdę mi pomogło. Pomogło to rozwiązać problem docelowy/uniwersalny/etap/bin/{nazwa aplikacji}. – BenMorganIO

2

Rozwiązałem to w następujący sposób (być może już odpowiedział, ale tutaj są moje kroki)

$ heroku local web 

Mam następujący wynik w konsoli

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

Potem zrobiłem

$chmod 777 target/bin/Service 

i problem rozwiązany.

Tutaj Service jest nazwa mojego wniosku (jak określono w wtyczce pom.xml org.codehaus.mojo) i tutaj jest to, co mój zawartość pliku Procfile wygląda

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

Ta odpowiedź wygląda raczej świeżo, ale w [Zagraj w 2.4.x dokumentacji] (https://www.playframework.com/documentation/2.4.x/ProductionHeroku) wydaje się sugerować zupełnie inaczej ('web: target/universal/stage/bin/myapp'), że pomaga każdemu. +1 za sugerowanie testów lokalnych za pomocą 'heroku local web'. – matanster

Powiązane problemy