我的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编译这个项目时,它会成功编译。
答案 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,假设你以通常的方式设置它,直接窥探另一个项目。