java - IntelliJ स्प्रिंग बूट अनुप्रयोगों को धीरे-धीरे बनाने के साथ समाप्त नहीं करता है




spring intellij-idea gradle spring-boot (3)

मैं लिनक्स पर इंटेलिजे 13.1 का उपयोग कर रहा हूं और उदाहरण के बाद एक मूल आरईएसटी एप्लीकेशन बनाने का प्रयास करता हूं http://spring.io/guides/gs/spring-boot/

जब मैं IntelliJ के भीतर से लक्षित बूटरुन निष्पादित करता हूं तो इंटरग्रेटेड टॉमकैट सर्वर प्रारंभ होता है और सब कुछ ठीक काम करता है।

10:09:35: Executing external task 'bootRun'...
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:bootRun

लेकिन निष्पादन को रोकना धीरे-धीरे कार्य को प्रभावित नहीं करता है:

10:11:40: External task execution finished 'bootRun'.

मैं अभी भी कॉन्फ़िगर पोर्ट पर टॉमकैट उदाहरण का उपयोग कर सकता हूं। केवल इंटेलिजे बंद करने से प्रक्रिया को नष्ट कर दिया जाएगा।

मैंने इस विषय पर खोज की लेकिन मुझे कोई उचित उत्तर नहीं मिला। मुझे आश्चर्य है कि यह एक है

  • ग्रेडल समस्या (ग्रेडल रैपर संस्करण 1.11 का उपयोग कर)
  • लिनक्स समस्या (उबंटू 12.04)
  • IntelliJ समस्या (आईडीईए 13.1.2)
  • स्प्रिंग बूट समस्या (1.0.0.RELEASE से 1.1.0.M2 तक विभिन्न संस्करणों का प्रयास किया)

Answers

मुझे पता है कि यह उत्तर पहले से ही उत्तर दिया गया था, लेकिन Google में खोज करते समय यह पहला विषय है, मैंने सोचा कि एक विकल्प साझा करने में मैंने सोचा और मुझे पढ़ने वाले अन्य विषयों में नहीं मिला।

इस terminate साथ मेरी मुख्य समस्या यह थी कि हमेशा मैंने अपनी कक्षाओं में कुछ बदल दिया, मुझे सर्वर को पुनरारंभ करने की आवश्यकता थी, और यह असफल हो गया था इसलिए मुझे कभी-कभी सर्वर को stop/start करने की आवश्यकता होती थी।

इससे बचने के लिए, मैं spring-boot-devtools उपयोग करता spring-boot-devtools । मूल रूप से:

स्प्रिंग-बूट-डेवटोल्स का उपयोग करने वाले अनुप्रयोग क्लासपाथ में फ़ाइलों को बदलने पर स्वचालित रूप से पुन: प्रारंभ हो जाएंगे।

एकमात्र पकड़ यह है कि इंटेलिज पर यह केवल प्रोजेक्ट makes है अगर Build > Make Project क्लिक Build > Make Project , तो या तो इसे स्वचालित रूप से बनाने के लिए सेट करें या Build > Make Project पर क्लिक करना याद रखें।

उपयोग करने के लिए, बस अपने build.gradle / pom.xml निर्भरता जोड़ें: compile('org.springframework.boot:spring-boot-devtools')

मैंने इसे विकास में वास्तव में उपयोगी पाया।


मुझे पूरा यकीन है कि यह इंटेलिजे मुद्दा है क्योंकि:

जब आप IntelliJ के Gradle एकीकरण से bootRun चलाते हैं और फिर स्टॉप दबाते हैं, तो आपके द्वारा उल्लेखित एप्लिकेशन को जारी रखना जारी रहता है।

हालांकि, यदि आप कमांड लाइन का उपयोग करते हैं और gradle bootRun चलाते हैं और फिर gradle bootRun + C का उपयोग करते हैं, तो एप्लिकेशन बस ठीक हो जाता है।

ध्यान दें कि मेरा सेटअप विंडोज 7 है, इंटेलिजे 13.1.3, ग्रैडल 1.12 और स्प्रिंग बूट 1.1.0.एम 2।

यदि आपकी आवश्यकता को आसानी से आपके एप्लिकेशन को डीबग करने में सक्षम होना है, तो आपको केवल जावा (या ग्रोवी) कक्षा चलाने की ज़रूरत है, जिसमें main विधि है, क्योंकि यह वसंत बूट अनुप्रयोगों को चलाने का सबसे आसान तरीका है! उस के लिए वसंत बूट करने के लिए Kudos !!!

बेशक आप सभी परीक्षणों को चलाने या पैकेज किए गए एप्लिकेशन को बनाने जैसे कार्यों के लिए ग्रैडल का उपयोग करना जारी रख सकते हैं।


जैसा कि इस उत्तर में बताया गया है, उपयोग करने के लिए कौन सी अधिभारित विधि का चयन करते समय नियम लागू होते हैं।

उद्धरण के लिए:

  1. आदिम चौड़ाई संभवतः सबसे छोटी विधि तर्क का उपयोग करती है
  2. लपेटने का प्रकार किसी अन्य रैपर प्रकार तक नहीं बढ़ाया जा सकता है
  3. आप इंट से इंटीजर तक बॉक्स कर सकते हैं और ऑब्जेक्ट में विस्तार कर सकते हैं लेकिन लंबे समय तक नहीं
  4. बढ़ते धड़कन मुक्केबाजी, मुक्केबाजी वारा-बहस धड़कता है।
  5. आप बॉक्स कर सकते हैं और फिर Widen (एक int इंटीजर के माध्यम से ऑब्जेक्ट बन सकता है)
  6. आप विस्तृत नहीं कर सकते हैं और फिर बॉक्स (एक int लंबा नहीं हो सकता है)
  7. आप चौड़े और मुक्केबाजी दोनों के साथ, var-args को गठबंधन नहीं कर सकते हैं।

(आइए नियम 1 को फिर से परिभाषित करें: "आदिम चौड़ाई संभवतः सबसे विशिष्ट विधि तर्क का उपयोग करती है।")

तो इन नियमों को ध्यान में रखते हुए हम यहां क्या हो रहा है इसका एक अनुमान प्राप्त कर सकते हैं:

नियम संख्या एक के अनुसार, प्राचीन चौड़ाई सबसे विशिष्ट विधि तर्क का उपयोग संभव है। चूंकि एक int एक गैर-दशमलव संख्या (उदाहरण 1 ) द्वारा प्रतिनिधित्व किया जाता है और एक double को दशमलव-संख्या द्वारा सटीक 32 बाइट्स के साथ एक float (उदाहरण 1.0 ) से अधिक प्रतिनिधित्व किया जाता है, हम कह सकते हैं कि int "कम से कम" "या" double "से छोटे, और उस तर्क से, int s को double एस और" एस "को" प्रचारित "किया जा सकता है int को" demoted "किया जा सकता है।

बस रखें, एक आदिम जिसे दूसरे आदिम (जैसे int -> float -> double ) तक बढ़ाया जा सकता है, वह दूसरे से अधिक विशिष्ट है। उदाहरण के लिए, एक int double से अधिक विशिष्ट है क्योंकि 1 को 1.0 प्रचारित किया जा सकता है।

जब आप एक ही नाम के इन अधिभारित vararg विधियों के लिए कोई तर्क नहीं पारित करते हैं, क्योंकि वापसी प्रभावी रूप से वही (0 और 0.0 क्रमशः) होती है, तो संकलक उस विधि का उपयोग करना चुनता है जो टाइप int एक vararg में लेता है क्योंकि यह अधिक है विशिष्ट

इसलिए, जब आपने इन तरीकों को शुरू किया जो int और boolean s (प्रकार जिन्हें एक-दूसरे से चौड़ा नहीं किया जा सकता) में लेते हैं, तो कंपाइलर अब उपयोग करने के लिए कोई तरीका नहीं चुन सकता है क्योंकि int को "प्रचारित" या "डिमोट नहीं किया जा सकता " int एस, float एस और double एस की तरह। इसलिए, यह एक संकलन त्रुटि फेंक देगा।

मुझे उम्मीद है कि इससे आपको यह समझने में मदद मिलती है कि क्या हो रहा है।





java spring intellij-idea gradle spring-boot