类装入器资源 - 空值



我使用以下代码在测试用例中打印/访问根资源位置: 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(。

相关内容

  • 没有找到相关文章

最新更新