IntelliJ IDEA с Kotlin не может получить доступ к классу, требуемому другим модулем - PullRequest
0 голосов
/ 14 октября 2018

Я создаю новый проект Kotlin с несколькими модулями, и возникают проблемы при попытке запустить один из модулей из IntelliJ IDEA.

Чтобы оставить структуру простой, я получил module A и module B.
module B настраивает и возвращает log4j2 Logger экземпляр.
module A вызывает метод module B для получения регистратора и использует Logger непосредственно после этого.

Когда я создаю толстый jar и запускаю методы из module A, все работает нормально, и ведение журнала работает, но когда я пытаюсь запустить метод module A из IntelliJ IDEA, я получаю сообщение об ошибке от Kotlin:

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 голосов
/ 15 октября 2018

Проблема оказалась в объявлении 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 не поддерживают именование новых конфигураций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...