最近使用M2E打包项目时遇到了一些问题。由于我们的项目是基于SpringSide3的,在orm模块大量的使用了泛型,类似:
public <X> List<X> find(final String hql, final Map<String, ?> values)
public <X> List<X> find(final String hql, final Map<String, ?> values)
在Eclipse的JDT编译器下是没有任何报错的。然而,如果我们使用mvn clean package命令打包时,就会出现
写道
无法确定 <X>X 的类型参数;对于上限为 long,java.lang.Object 的类型变量 X,不存在唯一最大实例
这种错误,这是因为mvn命令调用的是系统$JAVA_HOME下的javac命令,而Oracle的jdk不支持这种写法的泛型,除非将结果强制转换成List<Object>或者Object,而这种写法会使SpringSide丧失优雅性。
目前的解决办法是,在Eclipse中使用Project-->clean使用JDT将源代码编译到target文件夹下,然后直接使用mvn package打包。