3

在我们的 web-app 项目中,我们包含了一些 jar 文件。为了修补 jar 文件中某个类的一些问题,我们在补丁源文件夹中更改了此类的实现。

由于在tomcat中有定义的类加载顺序(WEB-INF/classes在WEB-INF/lib之前),所以补丁版本的类是由tomcat加载的,而不是jar文件中的原始版本。因此,一旦我们部署我们的应用程序,一切都会按预期工作。

现在,我们想从 ant 对这个补丁类运行 junit 测试。因此,我们将类路径配置为同时保存原始 jar 和修补后的类文件。但是似乎没有办法告诉蚂蚁的junit任务首先加载修补的类,而不是jar文件中的未修补版本。

有没有办法解决这个问题?有没有办法确定 ant 的 junit 任务加载类的顺序?有没有其他方法可以从 ant 测试我们的补丁类?

4

1 回答 1

2

我认为 ant 类路径就像标准的 Java 类路径一样工作。按照声明路径的顺序搜索类路径,然后从找到它的第一个路径加载一个类。

您的 junit 任务的类路径元素应该类似于:

<classpath>
  <pathelement location="${patched.class.folder}"/>
  <pathelement location="${original.class.jar}"/>
</classpath>
于 2009-09-08T20:33:44.650 回答