java - "संकलन शुरू नहीं कर सकता:आउटपुट पथ मॉड्यूल के लिए निर्दिष्ट नहीं है..."



intellij-idea gradle intellij-13 (6)

मेरे पास एक बहुत ही सरल जावा + ग्रैडल प्रोजेक्ट है। यह ठीक बनाता है। यह "ग्रेडल रन" के साथ खोल से ठीक चलता है। हालांकि, अगर मैं इंटेलिजे के अंदर भागने की कोशिश करता हूं, तो मुझे मिलता है:

Cannot start compilation: the output path is not specified for module "xyz" Specify the output path in Configure Project.

मेरा "कंपाइलर आउटपुट" "इफेरिट प्रोजेक्ट संकलन आउटपुट पथ" पर सेट है। मैं एक कस्टम आउटपुट पथ नहीं चाहता, जो भी हो, बस एक सामान्य ग्रेडल बनाएं और चलाएं।


Answers

जब तक मैंने "gradle cleanIdea मॉड्यूल विचार मॉड्यूल" जानकारी कमांड तक नहीं चला, तब तक मेरे लिए कोई सुझाव नहीं किया गया: https://docs.gradle.org/current/userguide/idea_plugin.html


ओपन .iml फ़ाइल। कीवर्ड 'NewModuleRootManager' की तलाश करें। जांचें कि विशेषता 'उत्तराधिकारी-कंपाइलर-आउटपुट' सत्य पर सेट है या नहीं। यदि सत्य पर सेट नहीं है।

इस कदर :

component name="NewModuleRootManager" inherit-compiler-output="true">
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/app" isTestSource="false" />

आपको बस अपनी Module settings > Project पर जाना होगा और "प्रोजेक्ट कंपाइलर आउटपुट" निर्दिष्ट करना होगा और अपने मॉड्यूल को परियोजना से प्राप्त करना होगा। (इसके लिए Modules > Paths > Inherit project

यह मेरे लिए चाल थी।


ग्रेडल में विचार प्लगइन को कॉन्फ़िगर करते समय, आपको आउटपुट निर्देशिका को निम्नानुसार परिभाषित करना चाहिए।

idea{
    module{
        inheritOutputDirs = false
        outputDir = compileJava.destinationDir
        testOutputDir = compileTestJava.destinationDir
    }
}

आपको File -> Project Structure... में project compiler output को परिभाषित करना होगा Project Structure... -> Project -> Project compiler output :


यह एक पुरानी पोस्ट है, लेकिन मैं कुछ स्पष्टीकरण करना चाहता हूं:

SwingWorker.get बाधित अपवाद के रूप में interruptedException, निष्पादन अपवाद फेंकता है।

इसके अलावा यह एक बहुत विशिष्ट अनचेक अपवाद फेंकता है जो रद्द करना अपवाद है। बेशक यह किसी भी अनचेक अपवाद को संभावित रूप से फेंक सकता है, लेकिन रद्दीकरण अपवाद एक "असाधारण" और अप्रत्याशित नहीं है। जब आप रद्द करने के बाद विधि प्राप्त करने का प्रयास करते हैं तो इसे फेंक दिया जाता है।

निष्पादित अपवाद को तब किया जाता है जब DoInBackground के अंदर एक अपवाद फेंक दिया जाता है। मूल अपवाद निष्पादन अपवाद के अंदर लपेटा गया है। जब get () विधि को कॉल किया जाएगा, निष्पादन अपवाद फेंक दिया जाएगा। मूल अपवाद लेने और इसे प्रबंधित करने का विचार अच्छा है। (जैसा कि एमिल एच ने बताया)।

रद्दीकरण अपवाद अनचेक किया गया है और मेरी राय में जांच की जानी चाहिए। एपीआई कार्यान्वयन के लिए एकमात्र बहाना यह जांचने के लिए नहीं है कि इसकी स्थिति विधि है (रद्द)।
आप या तो यह कर सकते हैं:
- परीक्षण रद्द किया गया है () और यदि सत्य है तो कॉल () को कॉल न करें क्योंकि यह CancellationException फेंक देगा
- चारों ओर मिलें () कोशिश करें और कैनसेलेशन अपवाद जोड़ें, क्योंकि अनचेक किए गए संकलक द्वारा अनुरोध नहीं किया जाएगा
- तथ्य यह है कि रद्दीकरण अपवाद की जांच नहीं की गई है, आपको उन सभी चीजों को भूलने के लिए स्वतंत्र रहें और एक अच्छा आश्चर्य प्राप्त करें।
- कुछ भी करें क्योंकि आप कार्यकर्ता को रद्द नहीं करेंगे

InterruptedException। यदि आप रद्द करने (सत्य) के साथ स्विंग थ्रेड को रद्द करते हैं तो पहले इंटरप्टेबल विधि कॉल (निश्चित रूप से Thread.sleep, this.wait, शायद कुछ IO विधियों) में doInBackground इंटरप्ट अपवाद को फेंक देगा। लेकिन यह अपवाद निष्पादन अपवाद में लपेटा नहीं गया है। DoInBackground बाधित अपवाद के साथ समाप्त करने के लिए छोड़ दिया गया है। यदि इसे कैच किया गया है और किसी अन्य अपवाद में परिवर्तित किया गया है, तो उन्हें अनदेखा कर दिया जाएगा क्योंकि इस पल से रद्द करने से पहले ही ईडीटी पर स्विंग थ्रेड डोन का आह्वान किया गया है, और यदि किया जाता है तो उसे मानक रद्दीकरण अपवाद मिलता है। एक बाधित नहीं है अपवाद!

यदि आप रद्द (झूठी) के साथ रद्द करते हैं तो DoInBackground के अंदर कोई इंटरप्ट अपवाद नहीं उठाया जाता है। अगर आप रद्द (सत्य) के साथ रद्द करते हैं तो वही है लेकिन doInBackground के अंदर कोई इंटरप्ट करने योग्य विधि कॉल नहीं है। इन मामलों में, doInBackground अपने प्राकृतिक पाश का पालन करेगा। इस लूप को रद्द की गई विधि का परीक्षण करना चाहिए और कृपा से बाहर निकलना चाहिए। यदि doInBackground ऐसा नहीं करता है, तो यह हमेशा के लिए चला जाएगा। मैंने टाइमआउट की उपस्थिति के लिए परीक्षण नहीं किया है, लेकिन मुझे विश्वास नहीं है।

मेरे लिए, यह सिर्फ एक भूरे रंग का क्षेत्र बना हुआ है । किस मामले में इंटरप्टेड एक्सेप्शन फेंक दिया जाता है? मैं कुछ छोटा कोड देखना चाहता हूं, क्योंकि मैं एक समान अपवाद नहीं बना सकता था। :-)

पीएस मैंने दूसरे प्रश्न और उत्तर में दस्तावेज किया है कि रद्दीकरण के मामले में किए गए और राज्य परिवर्तन श्रोता को डिनबैकग्राउंड से बाहर बुलाया जाता है। चूंकि यह सच है, यह एक बग नहीं है- doInBackground विधि को डिज़ाइन करते समय विशेष ध्यान देने की आवश्यकता है। यदि आप इसमें घुसपैठ कर रहे हैं, तो स्विंगवर्कर देखें : जब पूरी तरह से विधि कहा जाता है?





java intellij-idea gradle intellij-13