Тот же исходный код, успешная сборка Eclipse, но сбой Maven (javac)
Автор вопроса: EnToutCasОтветов: 4
Продолжайте получать эту ошибку при компиляции с использованием 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. В чем здесь может быть проблема?
Эта проблема может возникнуть, если ваш код является универсальным и вызывает другой метод с универсальным типом возвращаемого значения. Иногда компилятор путается, пытаясь понять, как разрешить тип вызова/возврата метода.
Это можно решить, добавив в код явное приведение типов.
// 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.
}
Ответ 2 · рейтинг 3 · Jay
Несколько вещей, на которые стоит обратить внимание:
И Eclipse, и Maven используют одну и ту же установку java/bin.
Eclipse и Maven используют одни и те же библиотеки, у одного может быть что-то, чего нет у другого.
Ответ 3 · Lena
Я встретил ту же ошибку, используйте ant. Потому что при компиляции с помощью ant или maven javac использует JDK для компиляции. Но в eclipse у него есть JDT, который может успешно скомпилировать.
Я добавляю нижеприведенный скрипт в свой файл 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();
}
Может быть, и ваш код тоже.
Но, используя JDT, успех не является окончательным успехом в ant. build.xml может добиться успеха только в eclipse. когда я запускаю муравей из команды Windows, терпит неудачу. Выбросьте еще одну ошибку: Class not found: org.eclipse.jdt.core.JDTCompilerAdapter
PS, я скопировал jar-файлы о JDT в плагине eclipse в каталог ant_home/lib.
Желаю вам немного помочь. И наша проблема может решить.
Ответ 4 · Pramit Sinha
Это определенно должно что-то делать с версиями JDK, которые используют maven и eclipse. Также убедитесь, что ваш уровень соответствия компилятора в eclipse указывает на правильную версию JDK.