Функция верхнего уровня Kotlin не видна при использовании из другого проекта Maven

#maven #kotlin

Вопрос:

Следующий код работает в рамках того же проекта:

 import org.slf4j.Logger
import org.slf4j.LoggerFactory

val Any.log: Logger
    get() = LoggerFactory.getLogger(this.javaClass)
 

Пример использования:

 log.info("hi!")
 

Когда я пытаюсь сделать это из другого проекта, я получаю ошибку компиляции:

 Cannot access 'log': it is internal in 'com.mycompany'
 

Почему это происходит и как я могу заставить это работать?

Ответ №1:

Я не совсем понимаю это, но я понял это. Это действительно работает так:

 class Logger {
    companion object {
        val log: Logger
            get() = LoggerFactory.getLogger(this.javaClass)
    }
}