2009-10-22 15 views
7

Maven'in kullanıldığı derlerken bu hata alıyorum tutun başarısız:Aynı kaynak kodu Eclipse başarı inşa ancak 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 

Jenerik tip girişim ilkel türlerine uygulanamaz. Fakat Java5'ten beri boks/kutulama mekanizmasının ilkel tipler ve sarıcı sınıflar arasında sorunsuz bir şekilde çalıştığını düşündüm.

Her durumda, tuhaf olan şey, Eclipse herhangi bir hata bildirmemesi ve mutlu bir şekilde derlenmesidir. JDK1.6.0_12 kullanıyorum. Burada sorun ne olabilir?

cevap

3

birkaç nokta bakmak at:

    Eclipse ve Maven Hem Eclipse ve Maven aynı kitaplıkları kullanan
  1. , bir başka değil bir şey olabilir
  2. aynı java/bin yüklemesi kullanıyorsanız
  3. .
+2

Eclipse ile gönderilen derleyicinin Sun'ın resmi java derleyicisi ile aynı olmadığını fark ettim. – EnToutCas

11

Kodunuz genel olduğunda ve genel bir döndürme türüne sahip başka bir yöntem çağırdığında bu sorun oluşabilir. Bazen derleyici, yöntem çağrı/geri dönüş türünü nasıl çözeceğimizi anlamaya çalışırken kafası karışır.

Kodunuza açık bir döküm ekleyerek çözülebilir.

// 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

Aynı hatayı karşıladım, karınca kullanın. Karınca veya maven tarafından derlendiğinde, javac derlemek için JDK'yı kullanır. Ancak tutulmada JDT vardır, bu da başarıyı derleyebilir.

Aşağıdaki kod, build.xml dosyasında ekledim: <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" /> Ardından, karınca başarı oluşturabilir.

Maven ile aşina değilim. Belki derleyiciyi ayarlayabilir mi? Benim kaynak kodunda

, birçok kodu şöyle vardır: çok Belki public <X> X find(String hql, Object... values) { return (X) HibernateUtils.createQuery(getSession(), hql, values).uniqueResult(); }

senin kodu.

Ancak, JDT'yi kullanın, başarı karıncadaki son başarı değil. build.xml yalnızca tutulma işleminde başarı sağlayabilir. windows ant komutunu çalıştırdığımda, başarısız. Başka bir hata atın: Class not found: org.eclipse.jdt.core.JDTCompilerAdapter

PS, eclipse eklentisi için ant_home/lib dizinindeki JDT ile ilgili jar dosyaları kopyalarım var.

Size biraz yardımcı olun. Ve bizim sorunumuz çözebilir.

0

Kesinlikle JDK sürümlerinde maven ve eclipse ile bir şeyler yapmak zorunda. Ayrıca Eclipse uyum düzeyinizin tutulmasının doğru JDK sürümüne işaret ettiğinden emin olun.

İlgili konular