Ant类路径顺序

时间:2009-06-02 14:04:06

标签: java ant classpath

如何在ant中设置类路径顺序?

具体来说,当我尝试运行我的ant构建时,我需要它来获取jar中的类(jaxws-api.jar)而不是jre中的同一个类。我目前正在设置类路径以明确包含那些罐子,但它似乎仍然首先拿起jre。我正在寻找的是“构建配置”菜单下eclipse中的Order / Export等效类型。

编辑:我会更明确。我有一些用CXF 2.1.3生成的类。他们调用javax.xml.ws.Service#getPort(QName,Class,WebServiceFeature ...)。我使用的是Java 1.6.02版。该方法在该版本的该类中不存在。但是,它确实存在于类的jaxws版本(以及更高版本的JRE类)中。当我尝试进行ant构建时,总是在jaxws版本之前拾取JRE类。这使我的编译失败。如何修改我的类路径以将JRE放在最后?

我无法更改JRE版本,因此请不要将其作为修复建议,除非它是唯一可能的版本。

3 个答案:

答案 0 :(得分:8)

您似乎需要使用JavacJava Ant任务中的bootclasspath设置。

您始终可以ant -v来获取Ant构建的详细输出。

答案 1 :(得分:3)

ant类路径中的jar按您声明的顺序放置。

答案 2 :(得分:3)

我遇到了与Google Web工具包和servlet 3.0 API文件相同的问题。我需要确保我的servlet API jar在GWT库jar之前。这是有用的:

<path id="classpath">
        <filelist>
            <file name="${build.input}/__lib__/servlet-api.jar"/>
        </filelist>
        <fileset dir="${build.input}/__lib__">
            <include name="*.jar" />
        </fileset>
        <fileset dir="${build.input}/WEB-INF/lib">
            <include name="*.jar" />
        </fileset>
    </path>

请注意,首先需要首先列在文件列表中的jar,然后我可以从其他目录添加jar。我在接受的答案中尝试了bootclasspath,但它没有用。