2012-07-04 91 views
10

आज मैं एक्लिप्स जूनो के साथ खेल रहा हूं। हेलिओस से आ रहा है यह एक महान अपग्रेड है। एक नई संकलन त्रुटि को छोड़कर, सब कुछ ठीक काम कर रहा है।क्या इस अस्पष्ट विधि त्रुटि के साथ ग्रहण जूनो गलत है?

हम java.net ढांचे 'फ्यूज' का उपयोग कर रहे हैं और हम निम्नलिखित विधि कॉल:

The method inject(Object[]) is ambiguous for the type ResourceInjector 

निम्न विधियों में टकराने:

ResourceInjector.get().inject(true, this); 

ग्रहण हमें बताता है

inject(Object... components); 
inject(boolean arg0, Object... arg1); 

यह ग्रहण हेलीओस में ठीक (जावा 1.6.0.25 के साथ) काम करता है, लेकिन अब यह एक संकलन त्रुटि देता है और किसी भी को चलाने के लिए नहीं चाहता अधिक। ऐसा लगता है कि यह ग्रहण जूनो में एक बग है, अगर हम मेवेन का उपयोग कर निर्माण करते हैं तो ठीक है ... क्या कोई इस के लिए काम-आसपास जानता है?

उत्तर

8

यह वास्तव में जावा 5 और जावा 6 में एक बग है। यह जावा 7 में तय किया गया है, और ग्रहण अब इस 'बग' के लिए जांचता है।

बग के बारे में यहाँ और अधिक: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6886431

क्या विधि निम्नलिखित मामले में बुलाया जाना चाहिए?

inject(true); 

दोनों लागू हो सकते हैं, यकीन है, लेकिन आदिम बूलियन निश्चित रूप से एक बेहतर मैच है? जावा भाषा विशिष्टता (JLS) के अनुसार नहीं:

  • प्रति 15.12.2.5, न तो अन्य की तुलना में अधिक विशिष्ट है (< int: ऑब्जेक्ट सच नहीं है)

एक काम के आसपास (हम

ResourceInjector.get().inject(true, new Object[] {this});

2

संबंधित प्रश्न यहाँ: "method is ambiguous for the type" but the types are NOT ambiguous (and the error comes by upgrade from eclipse 3.7.2 to eclipse 4.2), मेरा उत्तर को कॉपी:

ही फ्यूज) को बदलने में सक्षम नहीं हैं

इस समस्या के लिए एक बग दायर और तय किया गया है bug 383780
यहाँ ठीक की प्रलेखन है: https://bugs.eclipse.org/bugs/attachment.cgi?id=218320

मूल रूप से, संकलक त्रुटि को ठीक करने, नवीनतम ग्रहण जूनो रिहाई का निर्माण (4.2.1 अब के रूप में) मिलता है, -vmargs के बाद निम्नलिखित पंक्ति जोड़ eclipse.ini में: (तो आप ग्रहण को पुनः आरंभ और आप परियोजनाओं के पुनर्निर्माण के लिए)

-DtolerateIllegalAmbiguousVarargsInvocation=true 
+0

कि "बर्दाश्त" इंगित करना चाहिए कि इस जानबूझकर था ... यह में एक बग था जावा 5 और 6, जाहिरा तौर पर, कि जावा 7 में तय किया गया था: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6886431 ** अपेक्षित व्यवहार **: संकलक त्रुटि। –

+0

यह नियॉन में काम नहीं कर रहा है? –

+0

@ निकोलस डीपियाज़ा मेरे पास नियॉन 1. ए है और यह मेरे लिए भी काम नहीं करता है। –

0

यह वास्तव में अजीब है आवश्यकता हो सकती है, आप एपीआई

इंजेक्षन (बूलियन arg0, वस्तु ... ARG1) परिवर्तित करते हैं;

से

इंजेक्ट (बूलियन arg0, ऑब्जेक्ट ...ARG1);

तो (सच है, यह) इंजेक्षन अस्पष्ट नहीं किसी भी अधिक

मैं सोचता बग को ठीक http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6199075 निश्चित रूप से एक खराब विचार

+0

मैंने इसे स्वयं देखा। नैतिक प्रतीत होता है, एक प्राचीन प्रकार के साथ एक चर तर्क तर्क पैरामीटर से पहले नहीं है। जूनो में अपग्रेड करने और विधि (इंटीजर, ऑब्जेक्ट []) में विधि (इंटीजर, ऑब्जेक्ट []) में अपग्रेड करने का प्रयास करते समय मुझे यह समस्या ठीक थी। चूंकि संकलक इसे लागू करने जा रहा है, इसलिए प्रोग्राम के साथ आने के लिए थोड़ा विकल्प लगता है। –

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

  • कोई संबंधित समस्या नहीं^_^