带有Kotlin的IntelliJ IDEA无法访问其他模块所需的类

时间:2018-10-14 12:20:27

标签: gradle intellij-idea kotlin log4j

我正在创建一个具有多个模块的新Kotlin项目,当我尝试从IntelliJ IDEA运行其中一个模块时出现问题。

为了简化结构,我得到了module Amodule B
module B配置并返回log4j2 Logger实例。
module A正在调用module B方法来获取记录器,并在此之后直接使用 Logger

当我创建一个胖子罐并从module A启动方法时,一切正常,并且日志记录正常,但是当我尝试从IntelliJ IDEA启动module A方法时,我从Kotlin收到错误消息:< / p>

Error:(6, 29) Kotlin: Cannot access class 'org.apache.logging.log4j.Logger'. Check your module classpath for missing or conflicting dependencies

两个模块都是使用Gradle配置的,module A的依赖项为module B

dependencies {
    implementation(project(":moduleB"))
}

据我了解, IDEA 应该能够理解module B的要求并在执行使用module B的代码时自动加载它们,不是吗?

我想念什么吗?

1 个答案:

答案 0 :(得分:0)

事实证明问题出在log4j中的module B声明中。 最初,它被声明为:

implementation("org.apache.logging.log4j:log4j-api:2.11.1")

因此,此依赖项未公开给module A
更改为:

compile("org.apache.logging.log4j:log4j-api:2.11.1")

不再产生错误。

奇怪的是,使用api配置而不是compile是行不通的(尽管根据文档,这些配置是相同的)。看起来当前的IDEA Gradle插件不支持新的配置命名。