2013-09-30 9 views
10

Ho combattuto per ore e non riesco a capire perché dopo aver distribuito l'applicazione Scala Play 2.2 in Heroku ottengo questo stacktrace:L'applicazione Scala Play 2.2 si blocca dopo la distribuzione in Heroku: target/start Nessun file o directory

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 

ho provato diversi Procfile versioni senza successo, alcuni esempi sono:

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 

ho anche provato ad utilizzare senza Procfile.

Sto utilizzando Scala 2.10.2 e Play 2.2. Nella stessa applicazione di Heroku avevo una versione precedente del mio progetto in esecuzione su Play 2.0, non so se questo è collegato.

L'applicazione funziona perfettamente a livello locale. Mi sono collegato alla bash di Heroku e ho eseguito

sbt clean 
sbt stage 

a mano e ho controllato che il bersaglio venga pulito e ricostruito.

Cosa fa riferimento a "destinazione/avvio: nessun file o directory"? All'obiettivo? Al comando di avvio? Per qualcos'altro?

risposta

21

Gioca 2.2 ha cambiato il nome e la posizione del file utilizzato per avviare la vostra applicazione

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

Ad esempio, per avviare un'applicazione del progetto 'foo' dalla cartella del progetto, aggiornare il Procfile a gestiscono:

target/universal/stage/bin/foo 
+1

ho fatto così e si dice ancora 'target/universal/stage/bin/my-app-name-1234: Nessun file o directory' –

+1

Nella tua root, esegui 'play clean stage'. Questo renderà la directory di destinazione per te. Quindi basta "cd" dentro e capire la sua gerarchia. Continua a ispezionare finché non scopri qual è il nome dell'app. Questo mi ha davvero aiutato. Questo ha aiutato a risolvere il problema target/universal/stage/bin/{app name} – BenMorganIO

2

ho risolto nel seguente modo (possibilmente già risposto, ma qui sono i miei passi)

$ heroku local web 

ottenuto il seguente output nella console

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

Poi ho fatto

$chmod 777 target/bin/Service 

e problema risolto.

Qui, il servizio è il nome della mia applicazione (come specificato nel plugin di pom.xml org.codehaus.mojo) e qui è quello che il mio contenuto del file Procfile assomiglia

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

Questa risposta sembra piuttosto recente, ma in [Riproduci 2.4.x la documentazione] (https://www.playframework.com/documentation/2.4.x/ProductionHeroku) sembra suggerire in modo abbastanza diverso ('web: target/universal/stage/bin/myapp') aiuta chiunque. +1 per suggerire test locali con 'heroku local web'. – matanster

Problemi correlati