मैं अपने मुख्य वर्ग है पर स्थानीय रूप से नहीं बल्कि दुर्घटनाग्रस्त अनुप्रयोग:Heroku जावा वेब
public class Main {
public static void main(String[] args){
Spark.port(getHerokuAssignedPort());
get("/hello", (req, res) -> "Hello Heroku World");
}
private static int getHerokuAssignedPort() {
ProcessBuilder processBuilder = new ProcessBuilder();
if (processBuilder.environment().get("PORT") != null) {
return Integer.parseInt(processBuilder.environment().get("PORT"));
}
return 4567; //return default port if heroku-port isn't set (i.e. on localhost)
}
}
मेरे procfile:
web: java -jar build/libs/CrowdSubhaHeroku-1.0-SNAPSHOT-all.jar
नोट: मैं एक सामान्य जार निर्माण के बाद से shadowJar उपयोग कर रहा हूँ स्पार्क और फायरबेस जैसे मुझे निर्भरता शामिल नहीं है।
अब, अगर मैं ऐसा:
heroku local web
और localhost:5000
में जाओ, मैं 404 त्रुटि मिली। हालांकि, आवेदन वास्तव में दुर्घटनाग्रस्त नहीं है। यह चल रहा है।
कि विपरीत है जब मैं कार्य करें:
heroku open
एक git add .
, git commit -m "x"
के बाद, और एक git push heroku master
कौन सा एक "अनुप्रयोग त्रुटि" के साथ दुर्घटनाओं और मुझे इस देता है केवल:
2017-02-23T15:18:18.848727+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=crowdsubha.herokuapp.com request_id=ce636951-862e-4b2f-a698-924db3039a07 fwd="94.187.7.67" dyno= connect= service= status=503 bytes=
2017-02-23T15:18:20.022743+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=myapp.herokuapp.com request_id=d1e9ec86-ffe4-4a09-9934-81e25378c32c fwd="94.187.7.67" dyno= connect= service= status=503 bytes=
ये एकमात्र त्रुटियां हैं जो मुझे मिलीं। पिछली त्रुटियां कल से लॉग हैं।
मुझे बिल्कुल यकीन नहीं है कि समस्या क्या है। मुझे संदेह है कि shadowJar
के साथ इसका कुछ संबंध है। लेकिन मुझे यकीन नहीं।
क्या आप 'heroku logs -t' चलाने का प्रयास कर सकते हैं और इसे चलाना छोड़ सकते हैं। फिर एक और टर्मिनल सत्र में 'heroku ps: restart' चलाएं? यदि आपको कोई त्रुटि संदेश दिखाई देता है, तो कृपया इसे यहां जोड़ें। – codefinger
स्पष्ट रूप से, मेरी जार फ़ाइल (मेरा-ऐप-नाम-स्नैपशॉट-1.0-all.jar) को उसकेोकू में तैनात नहीं किया जा रहा है। जिसे मैंने 'heroku run ls build/libs/'का उपयोग करके सत्यापित किया है। हालांकि, नियमित जार फ़ाइल तैनात की जा रही है। लेकिन नियमित जार फ़ाइल में किसी कारण से ग्रेबल निर्भरता नहीं होती है, और यदि मैं नियमित जार –
का उपयोग कर रहा हूं तो मैं स्पार्क का उपयोग नहीं कर सकता हूं क्या आप './gradlew क्लीन स्टेज' चलाते समय जार फ़ाइल स्थानीय रूप से मौजूद होती है? – codefinger