如何控制 IntelliJ 暂存文件的依赖关系?

我有一个使用番石榴集合的暂存文件,我得到了一些奇怪的错误,我不得不假设这是由于编辑器和实际的运行环境假设不同版本的番石榴集合:

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中完全删除了番石榴,暂存文件仍然有效......为什么?图书馆从哪里来???暂存运行配置完全不包含任何可以规定以下内容的内容:

scratch run config

然而,它仍然运行良好。我发现,如果我从本地常春藤缓存中删除番石榴条目,它将不再运行。如果我然后将番石榴添加回我的项目,它最终会再次进入我的常春藤缓存,然后即使我从项目中删除番石榴,刮擦文件也很好。那么暂存文件只是选择一个随机版本还是别的什么?位于 的常春藤缓存如下所示:~/.ivy2/cache/com.google.guava

ivy cache

但是由于某种原因,还有一个“jars”文件夹有一个番石榴-12.0:

other folder in ivy cache

同样,我不知道正在使用哪个版本,或者为什么缓存有这么多不同的版本。有什么想法吗?


答案 1

对我来说最简单的一种方法是在运行配置对话框中选择“使用现有项目模块的类路径”(它配置了依赖项)。如果要从项目中提取一段功能以单独使用,但仍使用配置的依赖项,这将非常有用。


答案 2

我在PyCharm中遇到了一个类似的问题,我刚刚修复了这个问题 - 所以你的里程可能会在这里有所不同。它表明有一个Python虚拟环境作为默认附加到项目窗口(我在同一窗口中打开了多个项目 - 但显然第一个成为默认)。

我深入研究了解释器列表,找到了我想要的解释器并编辑了其属性,特别是将此虚拟环境与当前项目相关联

我选中了包含我正在寻找的库的virtualenv的框,这修复了编辑器本身的编译错误。

enter image description here


推荐