Intereting Posts
Могу ли я иметь другой тип возврата в котлин? Получение данных JSON из тела POST в Spark + Kotlin Как настроить приложение Gluon с помощью Kotlin и Tornado FX Как отладить «ошибку SQL (запрос) или отсутствующую базу данных» в приложении для Android? Как я могу подключить Продюсера к Актеру? Как реализовать модульный модуль для каждого типа номера в Котлине? Поток Akka, выше по потоку, не производя значения Android – IllegalStateException: cursor.getString (idx) не должно быть null Позиция метки `@` в Котлине, обозначая приемник с `this` TornadoFX как связать стиль узла (или styleClass) с свойством? Были отчеты об обработке ошибок в кодеков «Ни одна из следующих функций не может быть вызвана с аргументами, предоставленными« с топливным HTTP-протоколом » Android LiveData Observer не активен после первого обновления Как использовать `filter` на экземпляре карты в Kotlin? Собственная собственность Котлина

Компиляция проекта Android с kotlin на TeamCity не удается

Мой шаг построения использует построение градации в шаблоне из TeamCity, но, к сожалению, я получаю:

[16:29:22][:presentation:compileLocalDebugKotlin] Using kotlin incremental compilation [16:29:48][:presentation:compileLocalDebugKotlin] Compilation with Kotlin compile daemon was not successful [16:29:48][:presentation:compileLocalDebugKotlin] java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is: [16:29:48][:presentation:compileLocalDebugKotlin] java.io.EOFException [16:29:48][:presentation:compileLocalDebugKotlin] at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:229) [16:29:48][:presentation:compileLocalDebugKotlin] at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162) 

Любые идеи о том, почему я могу это получить?

Я столкнулся с тем же вопросом. Однако он не был связан с Котлином.

Мне пришлось отключить дегустацию градиента (в любом случае это не рекомендуется на серверах CI).

В teamcity вы можете, например, сделать это, добавив -Dorg.gradle.daemon=false в переменную среды GRADLE_OPTS .

См. https://docs.gradle.org/current/userguide/gradle_daemon.html.

По умолчанию компилятор Kotlin выполняет свой собственный демон процесса. Передайте эту конфигурацию Gradle при запуске на CI для компиляции Kotlin в том же процессе сборки:

 -Dkotlin.compiler.execution.strategy="in-process" 

Отключение демона Gradle также является распространенной практикой в ​​средах CI:

 -Dorg.gradle.daemon=false 

Можно было бы ожидать, что свойство демона Gradle также отключит демон прототипа компилятора Kotlin, но это не то, что в настоящее время происходит. GradleKotlinCompilerRunner.kt учитывает свойство org.gradle.daemon после свойства kotlin.compiler.execution.strategy . Если стратегия исполнения не определена, бегун по умолчанию использует стратегию "daemon" :

 val executionStrategy = System.getProperty(KOTLIN_COMPILER_EXECUTION_STRATEGY_PROPERTY) ?: DAEMON_EXECUTION_STRATEGY if (executionStrategy == DAEMON_EXECUTION_STRATEGY) { val daemonExitCode = compileWithDaemon(compilerClassName, compilerArgs, environment) if (daemonExitCode != null) { return daemonExitCode } else { log.warn("Could not connect to kotlin daemon. Using fallback strategy.") } } val isGradleDaemonUsed = System.getProperty("org.gradle.daemon")?.let(String::toBoolean) return if (executionStrategy == IN_PROCESS_EXECUTION_STRATEGY || isGradleDaemonUsed == false) { compileInProcess(argsArray, compilerClassName, environment) } else { compileOutOfProcess(argsArray, compilerClassName, environment) } 

Явное определение стратегии выполнения для "in-process" приведет вас к compileInProcess() независимо от конфигурации демона Gradle, однако вам может потребоваться отключить оба этих демона на серверах CI.