使用Ant编译Eclipse项目的问题

时间:2011-11-19 14:18:42

标签: java generics ant

我在Eclipse上创建了一个相当大的Web项目(8个月的工作)。到目前为止,我一直在使用Eclipse构建系统。现在我想转到Ant有很多原因(其中包括能够添加某些WAR之前的任务,比如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有什么不同吗?

1 个答案:

答案 0 :(得分:1)

实际使用的是什么版本的Ant,以及正在使用哪个版本的编译器?要进行健全性检查,请在您尝试运行ant的命令行中尝试此操作:

ant -v。

javac -v。

我遇到过类似的情况,一切都应该有效,但没有。在这里,Weblogic有一个比我试图使用的更早版本的ant和javac版本,而这些旧版本正在使用而不是我想要的版本。我最后编写了一个脚本,在我的PATH中显式设置这些变量,并在运行ant任务之前运行脚本。