Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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 IDEA社区为什么编译只使用运行时依赖项的代码?_Java_Intellij Idea_Kotlin_Dependency Management - Fatal编程技术网

Java Intellij IDEA社区为什么编译只使用运行时依赖项的代码?

Java Intellij IDEA社区为什么编译只使用运行时依赖项的代码?,java,intellij-idea,kotlin,dependency-management,Java,Intellij Idea,Kotlin,Dependency Management,注意:可以在包的基础上禁用导入建议。这不是我要找的功能 我试图通过将可传递依赖项标记为仅运行时依赖项,来分离Intellij IDEA CE中的intellisense/autocomplete建议。作为一个具体的例子,假设我想从下面的窗口中删除臭名昭著的hamcrest建议: 当我使用Gradle时,我想我可以通过将org.hamcrest:hamcrest core:1.3atestRuntimeOnly依赖项而不是testImplementation依赖项来解决这个问题。正如所料,将Gr

注意:可以在包的基础上禁用导入建议。这不是我要找的功能

我试图通过将可传递依赖项标记为仅运行时依赖项,来分离Intellij IDEA CE中的intellisense/autocomplete建议。作为一个具体的例子,假设我想从下面的窗口中删除臭名昭著的hamcrest建议:

当我使用Gradle时,我想我可以通过将
org.hamcrest:hamcrest core:1.3
a
testRuntimeOnly
依赖项而不是
testImplementation
依赖项来解决这个问题。正如所料,将Gradle项目重新导入IDE后,它在IntelliJ模块中被正确标记为“运行时”依赖项:

然而,这并没有阻止intellisense从被排除的库中提出建议。更糟糕的是,使用“运行时”作用域库的代码实际上是使用IDE工具链编译的,但是gradle构建失败,因为库被正确地从编译类路径中排除

在这一点上,我验证了我可以使用任何“运行时”范围的依赖项中的任何代码,并且IDE不会有任何问题

我是不是遗漏了什么?如果“运行时”范围不阻止我直接依赖代码,那么它的意义何在


注意:我将Kotlin用于JVM,即我的源代码是Kotlin,但依赖项是Java。

这只能在包的基础上使用导入/完成排除来完成。IDE intellisense将从运行时依赖项中建议方法,因为它对您的应用程序是可用的,可以在代码中使用。@CrazyCoder在代码中使用运行时依赖项是不正确的-gradle在编译时从类路径中忽略这些库,因此生成将失败。Martin,不知道为什么添加了安卓标签。虽然kotlin和IntelliJ的一个变体通常用于Android开发,但这个问题更普遍地适用于任何使用IntelliJ的kotlin项目,也可能适用于任何java项目。现在把它改回去,除非你有其他原因让我失踪。