在我们的网络应用程序项目中,我们包含了一些jar文件。为了修补jar文件中某个类的某些问题,我们在补丁源文件夹中更改了该类的实现。
由于tomcat中存在已定义的类加载顺序(WEB-INF / lib之前的WEB-INF / classes),因此该类的修补版本由tomcat加载,而不是jar文件中的原始版本。因此,只要我们部署应用程序,一切都按预期工作。
现在,我们想要针对这个修补过的类运行ant的junit测试。因此,我们将类路径配置为包含原始jar和修补的类文件。但似乎没有办法告诉ant的junit任务首先加载修补的类,而不是jar文件中未修补的版本。
有没有办法解决这个问题?有没有办法确定ant的junit任务加载类的顺序?有没有其他方法可以测试我们的修补课程?
答案 0 :(得分:2)
我认为ant类路径就像标准的Java类路径一样。按照声明路径的顺序搜索类路径,并从找到它的第一个路径加载一个类。
你的junit任务的classpath元素应该是这样的:
<classpath>
<pathelement location="${patched.class.folder}"/>
<pathelement location="${original.class.jar}"/>
</classpath>