2013-09-30 12 views
10

Tôi đã chiến đấu với điều này trong nhiều giờ và tôi không thể hiểu tại sao sau khi triển khai ứng dụng Scala Play 2.2 của tôi trong Heroku stacktrace:Scala Chơi 2,2 lỗi ứng dụng sau khi triển khai trong Heroku: target/start Không có tập tin hoặc thư mục như vậy

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 

tôi đã thử nhiều Procfile phiên bản không có thành công, một số ví dụ là:

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 

tôi thậm chí đã cố gắng sử dụng không Procfile.

Tôi đang sử dụng Scala 2.10.2 và Play 2.2. Trong cùng ứng dụng Heroku, tôi đã có một phiên bản trước của dự án đang chạy trên Play 2.0, tôi không biết liệu nó có liên quan hay không.

Ứng dụng hoạt động hoàn hảo tại địa phương. Tôi kết nối với bash trong Heroku và chạy

sbt clean 
sbt stage 

bằng tay và tôi đã kiểm tra mục tiêu được làm sạch và xây dựng lại.

"Mục tiêu/bắt đầu: Không có tệp hoặc thư mục như vậy" đề cập đến điều gì? Đến mục tiêu? Để bắt đầu lệnh? Để cái gì khác?

Trả lời

21

Chơi 2.2 đã thay đổi tên và vị trí của tập tin sử dụng để bắt đầu ứng dụng của bạn

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

Ví dụ, để bắt đầu một ứng dụng của dự án 'foo' từ thư mục dự án, cập nhật Procfile của bạn để chạy:

target/universal/stage/bin/foo 
+1

tôi đã làm như vậy và nó vẫn nói 'target/universal/stage/bin/my-app-name-1234: Không có tệp hoặc thư mục nào như vậy ' –

+1

Trong thư mục gốc của bạn, hãy chạy' play clean stage'. Điều này sẽ làm cho thư mục đích cho bạn. Sau đó, chỉ cần 'cd' vào nó và tìm ra hệ thống phân cấp của nó. Chỉ cần tiếp tục kiểm tra cho đến khi bạn phát hiện ra tên ứng dụng của bạn là gì. Điều này thực sự đã giúp tôi. Điều này đã giúp giải quyết vấn đề mục tiêu/phổ/giai đoạn/bin/{tên ứng dụng} – BenMorganIO

2

Tôi giải quyết nó như sau (có thể đã trả lời nhưng đây là các bước của tôi)

$ heroku local web 

Got đầu ra sau trong giao diện điều khiển

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

Sau đó, tôi đã làm

$chmod 777 target/bin/Service 

và vấn đề được giải quyết.

Ở đây, dịch vụ là tên của ứng dụng của tôi (như quy định trong plugin pom.xml org.codehaus.mojo) và đây là những gì nội dung tập tin Procfile của tôi trông giống như

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

Câu trả lời này có vẻ khá gần đây, nhưng trong [Play 2.4.x tài liệu] (https://www.playframework.com/documentation/2.4.x/ProductionHeroku) dường như đề xuất khá khác nhau ('web: target/universal/stage/bin/myapp') nó giúp mọi người. +1 để đề xuất thử nghiệm cục bộ với 'web địa phương heroku'. – matanster

Các vấn đề liên quan