我有一个使用番石榴集合的暂存文件,并且我不得不假设一些奇怪的错误是由于编辑器和实际运行环境假定番石榴集合的版本不同而引起的:
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.collect.Range.<init>(Lcom/google/common/collect/Cut;Lcom/google/common/collect/Cut;)V from class
com.google.common.collect.Ranges
at com.google.common.collect.Ranges.create(Ranges.java:80)
at com.google.common.collect.Ranges.closedOpen(Ranges.java:114)
at Scratch.main(scratch_2.java:69)
并不是我真的可以肯定地知道这一点,因为我也无法弄清楚应该如何看待暂存文件的版本。我已从项目的Deps和暂存文件中完全删除了番石榴。仍然有效...为什么?图书馆从哪里来???从头开始运行的配置完全没有什么可决定的:
但是它仍然可以正常运行。我发现,如果我从本地常春藤缓存中删除了番石榴条目,它将不再运行。如果再将番石榴重新添加到项目的部门中,它将再次出现在我的常春藤缓存中,然后即使我从项目部门中删除了番石榴,也可以重新创建临时文件。那么,草稿文件只是选择一个随机版本还是其他?常春藤缓存位于~/.ivy2/cache/com.google.guava
,如下所示:
但是由于某种原因,还有一个带有guava-12.0的“ jars”文件夹:
同样,我也不知道正在使用哪个版本,或者为什么缓存有这么多不同的版本。有什么想法吗?
答案 0 :(得分:5)
对我来说,最简单的一种方法是在运行配置对话框中选择“使用现有项目模块的类路径”(已配置依赖项)。如果您想从项目中提取一部分功能以单独使用但仍使用已配置的依赖项,则此功能很有用。
答案 1 :(得分:1)