2013-06-20 8 views
7

ग्रहण में समस्या लॉग दिखाता है "परियोजना के निर्माण पथ में एक चक्र का पता चला ...." किसी भी विचार से इन चक्रीय निर्भरताओं से छुटकारा पाने के लिए क्या करना है? मुझे नहीं पता कि कौन सी परियोजनाएं एक-दूसरे पर निर्भर हैं।ग्रहण में एक परियोजना में विभिन्न मॉड्यूल के बीच चक्रीय निर्भरता को कैसे हल करें?

+0

क्या आप पूरे त्रुटि संदेश को अपने प्रश्न में कॉपी/पेस्ट कर सकते हैं? नोट: आप यह निर्धारित कर सकते हैं कि प्रोजेक्ट के लिए राइट-क्लिक करके, प्रॉपर्टी चुनने और प्रोजेक्ट रेफरेंस पर जाकर प्रोजेक्ट के लिए कौन सी निर्भरताएं मौजूद हैं। –

+0

इसके अलावा, परियोजना संदर्भ आमतौर पर दुर्घटना द्वारा सेट अप नहीं होते हैं। क्या आप मेवेन जैसे बिल्ड सिस्टम का उपयोग कर रहे हैं? –

+0

मैं चींटी निर्माण प्रणाली का उपयोग कर रहा हूँ। –

उत्तर

2

प्रोजेक्ट सेटिंग में आप निर्भरताओं को देख सकते हैं, आप जो कर सकते हैं वह सभी निर्भरताओं को हटा रहा है और एक के बाद एक डीपी जोड़ सकता है। एक चक्र का मतलब है कि आपको ऐसा नहीं करना चाहिए था। आपका समाधान वर्गों की पहचान के बाद, चलो कहते हैं अपने बड़े प्रोजेक्ट एक माध्यमिक परियोजना बी से कक्षा CB1 की आवश्यकता होती है और CB1 परियोजना एक से वर्ग सीए 1 की आवश्यकता होती है है:

  • ले जाएँ परियोजना एक में एक वर्ग CB1 निर्भरता को निकालना - -> काम करता है अगर यह अधिक निर्भरता नहीं बनाता है।
  • इंटरफेस निकालें और गैर निर्भर इंटरफेस का उपयोग करें (आपको अपनी संरचना के आधार पर सुपर क्लास या अधिक इंटरफेस बनाने की आवश्यकता हो सकती है)।
  • अलग-अलग कार्यान्वित, आपको विशेष रूप से अन्य परियोजना से कक्षा की आवश्यकता क्यों है? यदि कोई
+0

किसी ऐसे व्यक्ति के लिए संकेत जो 2 प्लगइन का उपयोग कर रहा है (हम 700 से अधिक का उपयोग कर रहे हैं) और उस त्रुटि को उदाहरण के लिए मर्ज के दौरान प्राप्त करना: यदि आप अपने मैनिफेस्ट (MANIFEST.MF) -> निर्भरता (टैब) -> निर्भरता में जाएंगे आपके पास विश्लेषण है "निर्भरता ग्राफ में चक्र की तलाश करें" जो आपको दिखाएगा कि आपके पास उन लूप कहां हैं। इसलिए यह पता लगाना आसान होगा कि कहां से शुरू करना है। चीयर्स। – mtfk

12

आप ग्रहण में परिपत्र निर्भरता गंभीरता समायोजित कर सकते हैं:

Preferences > Java > Compiler > Building > Build path problems > Circular dependencies 
+1

हालांकि समस्या को ठीक नहीं करता है। यह सिर्फ इसे buries। –

+1

@ जोरीस: आपने जो सुझाव दिया है वह इस समस्या का अस्थायी समाधान है। हन एप्लिकेशन इस सेटिंग के साथ ठीक काम करता है लेकिन बाद में यह एक बड़ी समस्या हो सकती है क्योंकि इससे एप्लिकेशन में अवांछित त्रुटियां हो सकती हैं। –

+1

धन्यवाद दोस्त !!!! मेरी समस्या maven (कंसोल से काम करता है) के साथ नहीं था, लेकिन बेवकूफ ग्रहण के साथ। – MeIr

3

ग्रहण में एक चक्रीय निर्भरता को इंगित करता है ग्रहण में परियोजनाओं के बीच buildpaths में एक चक्र होता है।

तो अगर आप 5 परियोजनाओं, का कहना है कि ए, बी, सी, डी और ई है, तो एक चक्रीय निर्भरता कि हो सकता है:

  1. एक अपने निर्माण के रास्ते में बी की आवश्यकता है
  2. बी डी की आवश्यकता है इसके निर्माण के रास्ते में
  3. डी की आवश्यकता है एक अपने निर्माण के पथ

इसलिए A->B->D->A में एक चक्र है।

इस चक्र के कारण, ग्रहण नहीं जानता कि कौन सा प्रोजेक्ट पहले संकलित करना है।

इस चक्रीय निर्भरता को हटाने के लिए आपको अपने कोड को दोबारा करने की आवश्यकता है। या यदि वास्तविक कोड में ऐसी निर्भरता नहीं है, तो बिल्ड-पथ प्रविष्टियों को हटा दें जो अनावश्यक हैं।

0

सादा जावा परियोजनाओं के बीच निर्भरताओं को जानने के लिए, परियोजना गुण देखें। जावा बिल्ड पथ | परियोजनाओं। यदि आपके पास जे 2 ईई परियोजनाएं हैं, तो परियोजना गुणों में एक अतिरिक्त सेटिंग है परियोजना संदर्भ अपनी सभी परियोजनाओं के लिए उनको जांचें, कागज के टुकड़े (या स्क्रीन) पर ग्राफ बनाएं और देखें कि चक्र को तोड़ने के लिए आप क्या कर सकते हैं।

आमतौर पर, एक स्वस्थ निर्भरता ग्राफ में एक स्टार का रूप होता है, जिसमें सामान्य संसाधन वाले मूल प्रोजेक्ट होते हैं, और प्रत्येक पत्ता परियोजना कुछ विशिष्ट उपयोगकर्ता कार्यक्षमता को लागू करती है। विस्तार से, कोर वास्तव में कई परस्पर निर्भर परियोजनाओं में शामिल हो सकता है; बड़े पत्ते के लिए भी वही।

निर्भरता चक्र से बाहर एक सामान्य तरीका कई बारीकी से युग्मित परियोजनाओं का विलय है।

0

आपको अपनी परियोजनाओं या कोड को पुन: सक्रिय करना पड़ सकता है तो सामान्य अभिभावक कक्षाओं का उपयोग करने का प्रयास करें। यह आपके आवेदन के साथ पैकेजिंग के साथ एक मुद्दा हो सकता है।

0

मैंने बहुत समय पहले इस मुद्दे में भाग लिया था, और भले ही मैं भूल गया कि मैंने इसे कैसे हल किया, जब यह आवश्यक परियोजना में किसी वर्ग से आवश्यक परियोजना में से किसी एक से संवाद करने आया, तो मेरे पास प्रेषक प्रेषक में java.lang.reflect.Method ऑब्जेक्ट स्थापित करता है, जहां इसे प्रेषक के कोड के भीतर प्रेषक वर्ग की घोषणा किए बिना बुलाया जा सकता है।

मुझे यकीन है कि ऐसा करने के पसंदीदा तरीके हैं, जैसे प्रेषक और प्रेषक एक इंटरफेस साझा करते हैं, लेकिन कोडिंग अर्थव्यवस्था के मामले में, यह सबसे सरल लगता है।

जैसा कि अन्य उत्तरों सुझाव देते थे, यह एक वास्तविक परिपत्र नहीं है, बल्कि ग्रहण डिजाइन का एक आर्टिफैक्ट है।

2

वहाँ ग्रहण में परियोजनाओं के बीच चक्रीय निर्भरता को निकालना तीन तरीके,

1.Go परियोजना के लिए> हैं जावा compiler-> इमारत -> परियोजना विशिष्ट सेटिंग सक्षम करें।
पथ पथ समस्याओं का चयन करें और परिपत्र निर्भरता के विकल्प के रूप में चेतावनी दें।

2. परियोजना-> जावा बिल्ड पथ पर जाएं। प्रोजेक्ट टैब में, प्रोजेक्ट का चयन करें और हटाएं।

3. अपने मेटा-आईएनएफ फ़ोल्डर में जाएं, MANIFEST.MF खोलें। अपने MANIFEST.MF दृश्य टैब में, आप "आयात पैकेज:" कॉलम में चक्रीय आश्रित परियोजना देख सकते हैं।
कॉलम से परियोजना को हटाएं।

पहला विकल्प वास्तव में त्रुटि को हल नहीं करता है। दूसरा और तीसरा विकल्प इस निर्भरता को हल करने का सही तरीका है।

संबंधित मुद्दे