我使用以下代码在测试用例中打印/访问根资源位置: this.getClass().getClassLoader().getResource(".")
但是,当我使用 Maven 或 ANT 运行测试用例时,这会产生不同的结果。对于 Maven 构建,我得到了正确的路径"C:\....",但 ANT 在这里返回null
。
知道我在这里错过了什么吗?
更新:项目结构 - src/resources | tst/resources。
Maven 和 Ant 使用不同的类加载器系统。Maven使用Classworlds框架
Maven使用我们创建的Classworlds类加载框架 我们的类加载器图。
而 Ant 使用"Java 的委托模型">
Ant 的类加载器实现使用 Java 的委托模型
然后,您的结果可能会有所不同,因为您调用getResource(".")
的ClassLoader
在 Maven 和 Ant 之间并不相同。您将产生的结果在很大程度上取决于ClassLoader
实现。
看起来 2.5 之前的 ANT 版本中存在一个错误,导致 ANT 既不复制 tst/资源,也不将它们添加到类路径 (JIRA#IO-451(。