我有一个大型 Ivy 项目,我注意到我的代码在 eclipse 中运行良好,但在 ant 中运行时会导致编译错误。我已将问题缩小到以下行:
FileUtils.write(...).
此行失败 - 在编译期间 - 根本找不到该方法。显然,我的代码依赖于 apache 的 commons-io 库。而且很明显现在的commons-io有这个方法。
http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html
那么什么给了?
我很确定这与我的 ivy.xml 有关-> eclipse 编译器幸运地(或巧妙地)使用了可能的最新版本 commons-io ,而我的 ivy.xml 使用的是缺少此方法的旧版本。
最重要的是,ant 显然使用的是这个 jar 的不同版本。
所以 - 我的问题是:
1) 我如何告诉 ant / ivy 优先使用我指定的最新版本的库编译我的代码?我假设我的 lib/ 中的一些依赖项可能依赖于旧版本的 commons-io .....
还 :
2)在这种情况下,任何关于类加载器如何处理依赖于多jar的项目中的重复项的担忧的提示也将对我有所帮助......