У меня есть два проекта.Один полностью написан на Kotlin, который экспортирует артефакт Клиента.Я пытаюсь использовать клиента во втором проекте, который имеет смесь кода Java / Kotlin.
В классах Java у меня нет проблем с импортом файлов kotlin для использования, но в любых файлах kotlin IntelliJ не может разрешить импорт.Весь другой код kotlin работает нормально, и я могу без проблем скомпилировать его из командной строки через maven.Это просто проблема с IntelliJ, не распознающим пакет, который я ищу.
Я вижу пакет как на моей панели инструментов maven, так и во внешних библиотеках, перечисленных в проекте.Я проверил фляги и, конечно же, файл, который я ожидаю com/foo/bar/BazClient.class
, присутствует, но import com.foo.bar.BazClient
говорит мне, что пакет bar
(код из другого проекта) не существует.Тот же оператор импорта прекрасно работает в Java-коде.
Дальнейшее добавление к моим задачам точно такого же Java-класса, который импортирует этот клиент, если я конвертирую в kotlin, используя встроенный метод IJ, не компилируется в IntelliJ.Действие «построить проект» успешно завершено без предупреждений / ошибок.
Клиент Kotlin определен как:
package com.foo.bar
import retrofit2.http.GET
interface BazClient {
@GET("/v1/fuzz")
fun getFuzz(): Call<FuzzResponse>
}
Рабочий код Java:
package com.whodat.wat;
import javax.inject.Singleton;
import com.foo.bar.BazClient;
@Singleton
public class CallTheService {
private final BazClient bazClient;
public CallTheService(BazClient bazClient) {
this.bazClient = bazClient;
}
public FuzzResponse callIt() throws IOException {
return bazClient.getFuzz().execute().body();
}
}
Недействительный код Kotlin:
package com.whodat.wat
import javax.inject.Singleton
import com.foo.bar.BazClient // "bar" is red in editor
@Singleton
// Can't resolve "BazClient" here
class CallTheService(private val bazClient: BazClient) {
fun callIt(): FuzzResponse {
return bazClient.getFuzz().execute().body()!!
}
}