इंटेलीज हॉट कोड स्वैप कैसे सक्षम करें


80

Intellij मेरी स्थापना पर मूल हॉट कोड स्वैप नहीं कर रहा है।

इस कोड के लिए:

public class MainTest {
    public void method1() {
        System.out.println("Breakpoint here");
    }

    public void method2() {
        System.out.println("Line that will get 24 modified");
    }

    public static void main(String[] args) {
        System.out.println("First print here");
        MainTest mainTest = new MainTest();
        mainTest.method1();
        mainTest.method2();
        System.out.println("Line that I do not modify");
    }
}

मैंने एक ब्रेकपॉइंट लगाया mainTest.method1();फिर मेथड 2 () पर स्ट्रिंग को संशोधित किया, ctrl + s मारा और स्टेप बाय स्टेप जारी रखें। दुर्भाग्य से रनटाइम अपडेट नहीं किया गया है, पुराने स्ट्रिंग को प्रिंट किया जा रहा है। पूर्ण विराम - संकलन - रन नए स्ट्रिंग को प्रिंट करता है। तो मेरा निष्कर्ष गर्म-स्वैप है काम नहीं कर रहा है।

क्या कोई कोड है जिसे मुझे हॉट कोड स्वैप को सक्षम करने के लिए सेट करने की आवश्यकता है?

  • उबंटू, जेडीके 1.6
  • इंटेलीज 10.5 परम (मूल्यांकन)

मैंने कमांड लाइन एप्स के लिए हॉट स्वैप के बारे में कभी नहीं सुना है, केवल वेब एप्स के लिए।
duffymo

11
ग्रहण से आ रहा है, जो मुझे लगता है कि intellij यह भी करने में सक्षम होने की उम्मीद करेंगे। क्या मैं कुछ भूल रहा हूँ?
मैक्सिम वीक्स्लर

मैं भी इस के साथ बहुत से मुद्दों का सामना कर रहा था, और तब मुझे पता चला कि अगर आप VM का उपयोग कर रहे हैं - तो हॉट स्वैप काम नहीं करेगा
आशीष शेट्टर

जवाबों:


103

अपने ब्रेकपॉइंट पर प्रतीक्षा करते हुए अपनी कक्षा को बचाने के बाद , मानक कुंजी बाइंडिंग के साथ अपनी कक्षा को फिर से खोलें Build -> Compile 'MainTest.java'या दबाएं Ctrl+Shift+F9

IntelliJ IDEA फिर एक छोटा संवाद दिखाएगा जिसमें यह आपसे पूछता है कि क्या आप उस कक्षा को फिर से लोड करना चाहते हैं।


6
बहुत धन्यवाद। क्या मैं इंटेलीज ऑटो संकलन कर सकता हूं? (एक बेहतर सुविधा के लिए अनुमति देने के लिए होगा: ऑटो संकलन के बिना बचाने के लिए तो डिफ़ॉल्ट रूप से चालू मांग पर संकलन है)।
मैक्सिम वीक्स्लर


बहुत बहुत धन्यवाद, इस समय के लिए देखा!
सिम्चा

हॉट स्वैप से पहले डिबग के दौरान संकलन त्रुटि के बहुत सारे। पैकेज नहीं मिले।
सनीडे

@Sunnyday यह IntelliJ IDEA 2019.1 में तय किया गया है: youtrack.jetbrains.com/issue/IDEA-163187
joschi

26

संशोधनों के बाद और गर्म स्वैप को सक्षम करने के बाद, जावा फ़ाइल में एक परिवर्तन ने 1-2 सेकंड के पुनरारंभ समय लिया। (आरंभिक समय मेरे लिए लगभग 7 सेकंड है)।

मुझे आशा है कि विधि नीचे मदद करती है ...


सबसे पहले, आपको प्राथमिकताएँ मेनू में "स्वचालित रूप से प्रोजेक्ट बनाएं" जांचने की आवश्यकता है।

प्राथमिकताएँ मेनू खोलने के लिए;

आप शीर्ष मेनू पर जा सकते हैं और क्लिक कर सकते हैं;

इंटेलीज आईडिया -> प्राथमिकताएं

या आप कीबोर्ड के माध्यम से शॉर्टकट टाइप कर सकते हैं;

cmd + विकल्प + s

फिर, आप Make project automaticallyनीचे दिए गए चित्र के अनुसार देख सकते हैं ;

यहाँ छवि विवरण दर्ज करें

दूसरे, आपको compiler.automake.allow.when.app.runningरजिस्ट्री सेटिंग को सच के रूप में संशोधित करना होगा।

रजिस्ट्री खोलने के लिए, आपको कीबोर्ड शॉर्टकट के नीचे क्लिक करने की आवश्यकता है:

cmd + शिफ्ट + ए

कीबोर्ड के registryनीचे दिए गए चित्र, चयन Registryऔर हिट बटन के अनुसार टाइप करें ;

यहाँ छवि विवरण दर्ज करें

Registryविंडो खुलने के बाद , विकल्प compiler.automakeदेखने के लिए टाइप करें compiler.automake.allow.when.app.running, और इसे नीचे दिए गए चित्र की तरह देखें;

यहाँ छवि विवरण दर्ज करें

फिर, रजिस्ट्री परिवर्तन कार्य करने के लिए आपको IntelliJ को पुनरारंभ करना होगा।


2
HotSwap मेरे लिए तब काम करता है जब मैं एप्लिकेशन को डीबग करता हूं और फिर प्रोजेक्ट बनाता हूं या बस एक फाइल संकलित करता हूं। हालाँकि, ऊपर दिए गए रजिस्ट्री सेटिंग के बाद भी यह सेव पर काम नहीं करता है। क्या इसलिए कि मैं डिबग में हूं और रन नहीं?
DKroot

2
@DKroot, हां - इंटेलीज में आपको काम करने के लिए हॉट स्वैप के लिए डिबग मोड में होना चाहिए।
जम्मू वुडकॉक

7

Debugger > HotSwapइंटेलीज 11 में एक विकल्प है।


2
एक "एक्लिप्स मोड" प्लगइन है, जो बिल्कुल ग्रहण की पृष्ठभूमि वृद्धिशील संकलन की तरह काम करता है।
प्रतीक खदलोया

1
अच्छी टिप्पणी, दुख की बात है कि प्लगइन किसी भी अधिक plugins को
।intellij.net/plugin/?id=3822

3
इंटेलीज में 13 का उपयोग करें: फ़ाइल-> सेटिंग्स -> (सर्च फील्ड में HotSwap टाइप करें)
Ghandhikus

4

Setting -> Select Debug -> HotSwap पर जाएँ

यहाँ छवि विवरण दर्ज करें


1
यहां तक ​​कि इसका उपयोग करते समय मुझे अभी भी मैन्युअल रूप से intelliJ को फिर से शुरू करने का निर्देश देना होगा। यह इसे थोड़ा आसान बनाता है क्योंकि आपको इस प्रश्न का उत्तर देने की आवश्यकता नहीं है कि क्या आप कक्षाओं को फिर से लोड करना चाहते हैं।
हेन्नो वर्म्यूलेन

3

मैं चाहता था कि जब भी मैं एक जावा फ़ाइल को सहेजता हूं, तो मैं हर बार स्वचालित रूप से चलाऊं। अन्य जवाबों में से किसी ने भी ऐसा नहीं किया इसलिए मैंने सिर्फ:

  1. एक मैक्रो बनाया जो सहेजने पर चलेगा: https://stackoverflow.com/a/5581992/14731
  2. Action: Hotswapमैक्रो के अंत में जोड़ा गया ( Run -> Reload Changed Classes)

2

मेरे जैसी ही समस्या का सामना करने वाले किसी व्यक्ति के लिए, आप 2020.2 अपडेट को प्रभावित करने वाले निम्नलिखित हाल के बग में हो सकते हैं : https://youtrack.jetbrains.com/issue/IDEA-247530?_ga=2.116305920.729836363636.1599654650-984156210.1599654650।

TL; DR एक वर्कअराउंड के रूप में, आपको ग्रूवी प्लगइन को फिर से सक्रिय करने की आवश्यकता है।


0

मुझे उबंटू पर इस समस्या का सामना करना पड़ा। मेरे पास एक जाहिरा तौर पर असंबंधित मुद्दा भी था जहां इंटेलीजे ने फाइल वॉच लिमिट के बारे में एक त्रुटि दी थी (मेरे माफीनामे में अब सटीक त्रुटि संदेश नहीं है)। इस समस्या को बाद में हल करने के लिए मैंने निम्नलिखित कदम उठाए:

  1. निम्न पंक्ति को या तो /etc/sysctl.confफ़ाइल या एक नई * .conf फ़ाइल (उदाहरण के लिए idea.conf) /etc/sysctl.d/निर्देशिका में जोड़ें:

    fs.inotify.max_user_watches = 524288
    
  2. फिर परिवर्तन को लागू करने के लिए इस कमांड को चलाएं:

    sudo sysctl -p --system

अब मेरे रिएक्ट घटकों का पुनर्निर्माण और गर्म स्वैप बस ठीक है।

स्रोत


मेरा भी ऐसा ही मुद्दा है। हालाँकि यह (फाइल वॉचर बढ़ाने) ने मेरी मदद नहीं की।
संजीव दिवाकरन

0

मुझे लगता है कि आप इस बारे में पूछ रहे हैं,

  1. अपने जावा वर्ग पर राइट-क्लिक करें
  2. संकलन और पुनः लोड फ़ाइल का चयन करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.