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

K. *_*. M 16 java intellij-idea ivy guava intellij-idea-2018

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

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)
Run Code Online (Sandbox Code Playgroud)

并不是说我实际上可以肯定地知道这一点,因为我也无法弄清楚我应该如何查看暂存文件正在拉入哪个版本。我已经从我的项目的 deps 中完全删除了番石榴,并且暂存文件仍然有效。 .. 为什么?哪里来的图书馆???临时运行配置完全没有任何指示这一点的内容:

临时运行配置

但它仍然运行得很好。我发现如果我从本地常春藤缓存中删除番石榴条目,它将不再运行。如果我然后将番石榴添加回我的项目 deps,它会再次出现在我的 ivy 缓存中,然后即使我从项目 deps 中删除番石榴,临时文件也可以再次正常运行。那么临时文件是否只是选择了一个随机版本之类的?位于 的常春藤缓存~/.ivy2/cache/com.google.guava如下所示:

常春藤缓存

但由于某种原因,还有一个“jars”文件夹,里面有一个 guava-12.0:

常春藤缓存中的其他文件夹

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

小智 19

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

  • 使用 Java,当我执行此操作时,我收到“错误:无法找到或加载主类 Scratch” (9认同)
  • 这并不能解决问题,但对于那些寻找解决类路径方法配置问题的人来说,我所做的是,我仍然将 scrap.java 保留在它的文件夹中,当它准备好时,我将其复制并粘贴到根目录我用来配置类路径的文件夹的名称。在那里它似乎可以工作并在类路径中找到该类。我知道这不太实用,但我只是想发表评论,因为它可以解锁某人。 (5认同)

Ari*_*her 0

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

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

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

在此输入图像描述