我在Eclipse上创建了一个相当大的web项目(耗时8个月)。到目前为止,我一直在使用Eclipse构建系统。现在我想去蚂蚁有很多原因(其中,能够添加某些战前任务,如js压缩和其他…)。我发现Eclipse自动创建了一个build.xml
文件,并设置了所有依赖项。问题是,如果我尝试运行它,它会失败并给出以下错误:
type parameters of <TypeName>TypeName cannot be determined; no unique maximal instance exists for type variable TypeName with upper bounds TypeName,java.lang.Object
[javac] return dao.getItemByProperty(propertyName, val, objectClass);
实际上是由于泛型错误....而死亡通常它在Eclipse上编译得很好(我知道它是一个不同的编译器…)。我怎么能有javac工作与此??
方法是:
@Override
@Transactional
public <TypeName> TypeName getItemByProperty(String propertyName,
Object val, Class objectClass) {
return dao.getItemByProperty(propertyName, val, objectClass);
}
和dao.getItem……
@Override
public <TypeName> TypeName getItemByProperty(String propertyName,
Object val, Class objectClass) {
Session sess = sessionFactory.getCurrentSession();
Criteria criteria = sess.createCriteria(objectClass);
criteria.add(Expression.eq(propertyName, val));
@SuppressWarnings("unchecked")
List<TypeName> results = criteria.list();
if (results != null && results.size() != 0) {
TypeName res = results.get(0);
return res;
}
return null;
}
它们在两个类中,分别实现两个接口,第一个用于服务,第二个用于dao,它们在Spring中使用。
为什么会发生这种情况?Eclipse编译器与javac有很大不同吗?
实际使用的是哪个版本的Ant,使用的是哪个版本的编译器?要进行完整性检查,请在试图运行ant:
的命令行中尝试执行以下操作:ant - v。
javac - v。
我曾经遇到过类似的情况,一切都应该工作,但没有。在这里,Weblogic的ant和javac版本都比我尝试使用的版本要旧,而这些旧版本正在被使用,而不是我想要的版本。最后,我编写了一个脚本,在我的PATH中显式地设置这些变量,并在运行ant任务之前运行该脚本。