Чистая компиляция Maven не работает - PullRequest
0 голосов
/ 18 августа 2011

В моем pom-файле есть maven-compiler-plugin, но компилятор злится на общие параметры. моя версия maven "Apache Maven 3.0.3 (r1075438; 2011-02-28 19: 31: 09 + 0200)"

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <compilerVersion>1.6</compilerVersion>
    </configuration>
</plugin>

и класс, на который компилятор рассердится, выглядит следующим образом

List<EulTransactionHistory> list = hibernateTemplate.findByCriteria(criteria, -1, 1);
EulTransactionHistory existingRecord = DBUtils.oneAndOnlyOne(list);

и спецификация для DBUtils.oneAndOnlyOne выглядит следующим образом

public static <T> T oneAndOnlyOne(List<T> list) {...}

наконец, исключение составляет

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project etlscheduler: Compilation failure: Compilation failure SchedulerDaoImpl.java:[329,18] incompatible types
found   : java.lang.Object
required: com.aric.etlscheduler.domain.EulTransactionHistory

Более того, когда я компилирую этот проект с помощью Eclipse, он успешно компилируется.

Ответы [ 4 ]

0 голосов
/ 18 августа 2011

Является ли DBUtils в другом проекте, и у вас когда-то был DBUtils.oneAndOnlyOne (), который возвращал объект? Если это так, вам нужно выполнить установку Maven в этом проекте.

Maven использует последний установленный jar, в то время как Eclipse, предполагая, что вы настроили его обычным способом, отслеживает непосредственно другой проект.

0 голосов
/ 18 августа 2011

Из-за ошибки компилятора похоже, что это, возможно, то, что происходит.

  • DBUtils.oneAndOnlyOne(list) возвращает Object вместо EulTransactionHistory.
  • Это потому, чтосписок, который передается методу, является списком Objects, а не списком EulTransactionHistory.
  • Это, в свою очередь, объясняется тем, что hibernateTemplate.findByCriteria() возвращает список Objects, а несписок EulTransactionHistory.
0 голосов
/ 18 августа 2011

Если строка 329 равна

EulTransactionHistory existingRecord = DBUtils.oneAndOnlyOne(list);

тогда это потому, что 1) первый класс DBUtils вашего Maven-пути к классу имеет метод oneAndOnlyOne (), который возвращает java.lang.Object или 2) вы передаете ему не тот список, который, как вы думаете, вы его передаете, а непараметризованный Список или Список.

0 голосов
/ 18 августа 2011

Jar, содержащий класс com.aric.etlscheduler.domain.EulTransactionHistory, отсутствует в пути к классам вашего проекта. Убедитесь, что вы добавили jar в качестве зависимости в pom вашего проекта.

...