2009-10-22 14 views
7

रखें जब Maven का उपयोग कर संकलन यह त्रुटि मिलती:एक ही स्रोत कोड, ग्रहण सफलता का निर्माण लेकिन Maven (javac) में विफल रहता है

type parameters of <X>X cannot be determined; no unique maximal instance exists for type variable X with upper bounds int,java.lang.Object 

जेनेरिक्स प्रकार हस्तक्षेप आदिम प्रकार के लिए लागू नहीं किया जा सकता। लेकिन मैंने सोचा कि जावा 5 के बाद से, मुक्केबाजी/अनबॉक्सिंग तंत्र आदिम प्रकार और रैपर वर्गों के बीच निर्बाध रूप से काम करता है।

किसी भी मामले में, अजीब चीज ग्रहण किसी भी त्रुटि की रिपोर्ट नहीं करता है और खुशी से संकलित करता है। मैं जेडीके 1.6.0_12 का उपयोग कर रहा हूं। संभवतः यहां समस्या क्या हो सकती है?

उत्तर

3

कुछ बातें देखने के लिए पर:

  1. दोनों ग्रहण और Maven ही जावा/bin स्थापना का उपयोग कर रहे
  2. ग्रहण और Maven ही पुस्तकालयों का उपयोग कर रहे हैं, एक कुछ अन्य नहीं है हो सकता है।
+2

मुझे अभी एहसास हुआ कि ग्रहण के साथ भेजा गया कंपाइलर सूर्य के आधिकारिक जावा कंपाइलर जैसा नहीं है। – EnToutCas

11

यह समस्या तब हो सकती है जब आपका कोड सामान्य हो और यह एक अन्य विधि कहता है जिसमें सामान्य रिटर्न प्रकार होता है। कभी-कभी संकलक को कॉल कॉल/रिटर्न प्रकार को हल करने का तरीका जानने का प्रयास करने में भ्रमित हो जाता है।

इसे आपके कोड में एक स्पष्ट कलाकार जोड़कर हल किया जा सकता है।

// Old code: 
public T getValue() { 
    return otherMethod(); // otherMethod has the signature: <RT> RT otherMethod() { ... } 
} 

// New code: 
@SuppressWarnings("unchecked") 
public T getValue() { 
    return (T) otherMethod(); // the cast tells the compiler what to do. 
} 
0

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

मैं अपनी build.xml फ़ाइल में स्क्रिप्ट के नीचे जोड़ता हूं: <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" /> फिर, चींटी सफलता का निर्माण कर सकती है।

मैवेन से परिचित नहीं हूं। शायद, यह संकलक सेट कर सकते हैं? public <X> X find(String hql, Object... values) { return (X) HibernateUtils.createQuery(getSession(), hql, values).uniqueResult(); }

हो सकता है कि आपकी भी कोड:

मेरी स्रोत कोड में, कई कोड इस तरह कर रहे हैं।

लेकिन, जेडीटी का उपयोग करें, सफलता अंतिम सफलता नहीं है, चींटी में। build.xml केवल ग्रहण में सफलता का निर्माण कर सकता है। जब मैं विंडोज कमांड से चींटी चलाता हूं, तो असफल हो जाता है। एक और त्रुटि फेंको: Class not found: org.eclipse.jdt.core.JDTCompilerAdapter

पीएस, मेरे पास ग्रहण प्लगइन में ant_home/lib निर्देशिका में जेडीटी के बारे में जार फ़ाइलों की प्रतिलिपि है।

आपको थोड़ी मदद चाहिए। और हमारी समस्या हल हो सकती है।

0

यह निश्चित रूप से जेडीके संस्करणों के साथ कुछ करना है मैवेन और ग्रहण का उपयोग कर रहे हैं। यह भी सुनिश्चित करें कि ग्रहण में आपके कंपाइलर अनुपालन स्तर सही जेडीके संस्करण को इंगित करता है।

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