https://kotlinlang.org logo
Title
l

lewik

10/11/2017, 3:14 PM
В 1.2 `Error:(49, 0) Platform project project ':A' implements non-common project root project 'B' (
apply plugin 'kotlin-platform-kotlin'
)` Проект А является подпроектом B, проект А это
platform-jvm
. Я не совсем понимаю, что оно хочет? B дейтсвительно не common, но что в этом такого?
b

bashor

10/11/2017, 3:26 PM
попробуйте заменить на
apply plugin 'kotlin'
а у Вас нигде в A не написано
implements
?
l

lewik

10/11/2017, 3:29 PM
@bashor Написано
implement project(":")
Я честно тупо копировал https://kotlinlang.org/docs/reference/multiplatform.html ... Я не совсем разбираюсь с gradle, и не понимаю что за implement, но вероятно оно лезет в корневой проект судя по двоеточию. Замена названия плагина не привела к успеху - не обнаружен метод implement()
Существует проект C который сделан как common, он тоже подпроект проекта B
b

bashor

10/11/2017, 3:32 PM
это строчка указывает что данный модуль имплементит апи задонное как expected в “:”
l

lewik

10/11/2017, 3:34 PM
Ага, надо указать другой подпроект (который common - C)
i

ilya.gorbunov

10/11/2017, 3:38 PM
implement project(":C")
l

lewik

10/11/2017, 3:45 PM
Забавно,
Unresolved reference: Int
🙂 ну и прочие, например MutableList
Type mismatch: inferred type is kotlin.String but java.lang.String was expected
Версии котлина и плагина одинаковые, в idea тоже одинаковая - 1.2.0-beta-31
s

snrostov

10/11/2017, 4:02 PM
насколько я понимаю, стандартную бибилитеку нужно добавить в зависимость: compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlinVersion"
вы можете посмотреть полностью рабочий пример тут: https://github.com/jstuyts/kotlin-multiplatform-recipes/tree/syntax-1.2
оно собирается, но ссылки на common модуль из приложения все равно красные с версией плагина 1.2-eap
кстате, (кросспост из multiplatform), какую версию плагина к идее предпочтительнее использовать для multiplatform? dev?
l

lewik

10/11/2017, 4:07 PM
stdlib добавил изначально, пока без результатно
@snrostov
compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
- common проект
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- jvm проект
По предложенной ссылке вроде dependency совпадает
Внезапно заработало. Ребутнул идею (плагин обновил, не имеет отношения к котлин).
s

snrostov

10/11/2017, 4:44 PM
а у вас рабает вызов частей common модулей из обычных?
у меня компилируется градлом, но идея красным подсвечивает
это если добавить зависимость от impl модуля
если добавить зависимисоть от common модуля, наоборот идея видит, но градлом не компилится...
l

lewik

10/11/2017, 4:53 PM
@snrostov У меня jvm модуль может использовать common, там лежат сущности. Все компилится. Плагин котлина безостановочно падает while analyzing expression. В ява модуле в ява файлах вроде все чисто выглядит, в котлине иногда красное с пометкой что плагин упал Файлы котлина долго анализируются.. но я могу сделать Ctrl клик по классы и попасть в common-модуль. Часть методов в котлине не резолвится. Нда, использовать получится со скрипом... но надо попробовать.
А создавать проекты обязательно через меню проектов надо (там где указано kotlin-common и прочее)? Или можно взять существующий проект и просто добавить нужные депенденси?
Метод с @PlatformDependent может существовать для явы но не существовать для js?
s

snrostov

10/11/2017, 7:05 PM
А создавать проекты обязательно через меню проектов надо (там где указано kotlin-common и прочее)? Или можно взять существующий проект и просто добавить нужные депенденси?
я создавал через градл. если в градле указать заваисимость implement (в dev кстате нужно писать exceptedIn) и указывать нужные градл плагины (kotlin-platform-common, kotlin-platform-jvm, kotlin-platform-js) то идея корректно импортит настройки из градла и настраивает фасет котлина, т.е. все работает
l

lewik

10/12/2017, 9:46 AM
Теперь у меня jvm проект тоже не видит объекты из common
Вроде заработало, проблема аналогичная https://youtrack.jetbrains.com/issue/KT-20634 Сейчас idea все распознает и градл все собирает. Но с тормозами из-за
Unresolved service: class org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
. Советы про удаление .idea не помогли
Но в итоге и компиляция в js и в java работает и можно шарить код. Правда idea почти не подсказывает по поводу котлина.
b

bashor

10/19/2017, 4:10 PM
Метод с @PlatformDependent может существовать для явы но не существовать для js?
@lewik может, этой аннотацией помечаны только 2 метода — Map.getOrDefault и MytableMap.remove
Правда idea почти не подсказывает по поводу котлина.
чего именно не хватает?