Maven clean编译不起作用

时间:2011-08-18 06:48:34

标签: maven maven-3 maven-compiler-plugin

我的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 :(得分:0)

项目的类路径中缺少包含com.aric.etlscheduler.domain.EulTransactionHistory类的jar。确保在项目的pom中添加了jar作为依赖项。

答案 1 :(得分:0)

从编译器错误看,这可能是正在发生的事情。

  • DBUtils.oneAndOnlyOne(list)正在返回Object而不是EulTransactionHistory
  • 这是因为传递给该方法的列表是Objects的列表,而不是EulTransactionHistory的列表。
  • 反过来,这是因为hibernateTemplate.findByCriteria()返回了Objects的列表,而不是EulTransactionHistory的列表。

答案 2 :(得分:0)

如果第329行是

EulTransactionHistory existingRecord = DBUtils.oneAndOnlyOne(list);

然后是因为1)你的Maven类路径的第一个DBUtils类有一个返回java.lang.Object的oneAndOnlyOne()方法,或2)你没有将它传递给你认为你传递它的列表,但是一个未参数化的列表或列表。

答案 3 :(得分:0)

DBUtils是否在一个不同的项目中,你曾经有过一个返回Object的DBUtils.oneAndOnlyOne()吗?如果是这样,您需要在该项目上进行Maven安装。

Maven使用最后安装的jar,而Eclipse,假设你以通常的方式设置它,直接窥探另一个项目。