在我们的web-app项目中,我们包含了一些jar文件。为了修补jar文件中某个类的一些问题,我们在patches源文件夹中更改了该类的实现。
因为在tomcat中有一个已定义的类加载顺序(WEB-INF/classes在WEB-INF/lib之前),所以类的修补版本由tomcat加载,而不是jar文件中的原始版本。因此,一旦我们部署了我们的应用程序,一切都如预期的那样工作。
现在,我们希望从ant对这个打了补丁的类运行junit测试。因此,我们将类路径配置为同时保存原始jar和修补后的类文件。但是似乎没有办法告诉ant的junit任务首先加载修补过的类,而不是jar文件中未修补的版本。
有没有办法绕过这个问题?有没有办法确定ant的junit任务加载类的顺序?有没有其他方法来测试我们从ant打补丁的类?
发布于 2009-09-08 20:33:45
我认为ant类路径的工作方式与标准Java类路径类似。按照声明路径的顺序搜索类路径,并从找到类的第一个路径加载类。
你的junit任务的classpath元素应该是这样的:
<classpath>
<pathelement location="${patched.class.folder}"/>
<pathelement location="${original.class.jar}"/>
</classpath>https://stackoverflow.com/questions/1396068
复制相似问题