Тот же исходный код, сборка Eclipse прошла успешно, но Maven (javac) завершился неудачно - PullRequest
8 голосов
/ 22 октября 2009

Продолжайте получать эту ошибку при компиляции с использованием Maven:

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

Помехи универсального типа не могут применяться к примитивным типам. Но я думал, что начиная с Java5, механизм упаковки / распаковки без проблем работает между примитивными типами и классами-обертками.

В любом случае, странно то, что Eclipse не сообщает об ошибках и с радостью компилирует. Я использую JDK1.6.0_12. В чем здесь может быть проблема?

Ответы [ 4 ]

12 голосов
/ 04 января 2011

Эта проблема может возникать, когда ваш код является универсальным и вызывает другой метод с универсальным типом возвращаемого значения. Иногда компилятор запутывается, пытаясь понять, как разрешить тип вызова / возврата.

Это можно решить, добавив явное приведение к вашему коду.

// 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.
}
3 голосов
/ 22 октября 2009

Несколько вещей, на которые стоит посмотреть:

  1. Eclipse и Maven используют одну и ту же установку Java / bin
  2. Eclipse и Maven используют одни и те же библиотеки, у одного может быть что-то, чего нет у другого.
0 голосов
/ 29 октября 2014

Это определенно связано с версиями JDK, которые используют maven и eclipse. Также убедитесь, что ваш уровень соответствия компилятору в Eclipse указывает на правильную версию JDK.

0 голосов
/ 11 мая 2012

Я встретил ту же ошибку, используйте муравей. Потому что при компиляции с помощью ant или maven javac использует JDK для компиляции. Но в eclipse есть JDT, который может скомпилировать успешно.

Я добавляю скрипт ниже в мой файл build.xml: <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" /> Тогда муравей сможет построить успех.

Я не знаком с Maven. Может быть, он может установить компилятор?

В моем исходном коде много такого кода: public <X> X find(String hql, Object... values) { return (X) HibernateUtils.createQuery(getSession(), hql, values).uniqueResult(); }

Может быть, ваш код тоже.

Но, используйте JDT, успех не окончательный, в муравье. build.xml может построить успех только в затмении. когда я запускаю команду ant из windows, происходит сбой. Киньте еще одну ошибку: Class not found: org.eclipse.jdt.core.JDTCompilerAdapter

PS, я скопировал jar-файлы о JDT в плагине eclipse в каталог ant_home / lib.

Желаю вам небольшой помощи. И нашу проблему можно решить.

...