Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何控制IntelliJ Scratch文件的依赖关系?_Java_Intellij Idea_Guava_Ivy_Intellij Idea 2018 - Fatal编程技术网

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

Java 如何控制IntelliJ Scratch文件的依赖关系?,java,intellij-idea,guava,ivy,intellij-idea-2018,Java,Intellij Idea,Guava,Ivy,Intellij Idea 2018,我有一个使用guava collections的scratch文件,我得到一些奇怪的错误,我必须假设是由于编辑器和实际运行环境假设guava collections的版本不同: Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.collect.Range.<init>(Lcom/google/common/collect/Cut;Lcom/

我有一个使用guava collections的scratch文件,我得到一些奇怪的错误,我必须假设是由于编辑器和实际运行环境假设guava collections的版本不同:

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)
线程“main”java.lang.IllegalAccessError中出现异常:试图从类访问方法com.google.common.collect.Range。(Lcom/google/common/collect/Cut;Lcom/google/common/collect/Cut;)V com.google.common.collect.Ranges 位于com.google.common.collect.Ranges.create(Ranges.java:80) 位于com.google.common.collect.Ranges.closedOpen(Ranges.java:114) main(Scratch_2.java:69) 并不是说我可以确切地知道,因为我也不知道我应该如何看到scratch文件的版本。我已经从我的项目的DEP中完全删除了番石榴,并且这个临时文件仍然有效。。。为什么?图书馆从哪里来???scratch run配置中完全没有指示以下内容的任何内容:

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

但出于某种原因,“jars”文件夹中也有一个guava-12.0:


再说一次,我不知道正在使用哪个版本,也不知道为什么缓存中有这么多不同的版本。有什么想法吗?

我在PyCharm中遇到了一个类似的问题,我刚刚解决了这个问题,因此您的里程可能会有所不同。它指出有一个Python虚拟环境作为默认的项目窗口(我在同一个窗口中打开了多个项目,但显然第一个项目成为默认项目)

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

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


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

您的项目类型是什么?新的简单项目也面临同样的问题吗?这是一个SBT项目,依赖项来自maven。在一个简单的新项目中,尽管IntelliJ在项目之间共享临时文件,但我没有访问guava的权限,因此临时文件无法运行。在这个新项目中,我的scratch工作得很好(编辑器和运行时使用相同的库版本,所以我的东西现在就可以工作了!),删除dep会使scratch立即无法命名,而不会在缓存中乱搞。因此,我的问题是,scratch文件系统在这个项目中是本地的。奇怪的不过谢谢你的提示,至少我现在可以运行这个东西了!如果这对某人有帮助,您可以使用Java轻松地为Kotlin scratch文件使用父项目的类路径-(请参阅“使用模块的类路径”配置),我得到
错误:执行此操作时无法找到或加载主类scratch