Отключить проверку использования пакета «kotlin» в Gradle

Когда я пытаюсь gradlew build проект, я получаю сообщение об ошибке из задачи compileKotlin :

 F:\IdeaProjects\walp.tinykotlintest>gradlew build :compileKotlin ... Only the Kotlin standard library is allowed to use the 'kotlin' package ... BUILD FAILED Total time: 6.214 secs 

Это происходит потому, что я объявил класс в пакете, который начинается с: kotlin

Есть ли способ отменить эту проверку, настроив мой скрипт build.gradle ?

EDIT: Я точно знаю, что это возможно, если я скомпилирую с открытым компилятором kotlin … вот пример использования компилятора kotlin для компиляции класса в пакете kotlin … Поэтому я думаю, что должен быть способ делай это и в градле! .. Надеюсь …

То, что я пробовал до сих пор:

  1. Я попытался настроить gradle.build , настроив задачу KotlinCompile:

     import org.jetbrains.kotlin.gradle.tasks.KotlinCompile tasks.withType(KotlinCompile) { it.kotlinOptions.allowKotlinPackage = true } 

    Скрипт gradle отлично работает с этими изменениями … но похоже, что это игнорируется … и я все еще сталкиваюсь с ошибкой.

  2. Я попытался подклассифицировать класс KotlinCompile и переопределить его beforeCompileHook() и заменить существующую задачу compileKotlin на мою версию:

     import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.gradle.tasks.KotlinCompile class MyKotlinCompile extends KotlinCompile { @Override public void beforeCompileHook(K2JVMCompilerArguments args) { args.allowKotlinPackage = true throw new RuntimeException("HELLO") // added to see if hook is run } } tasks.create(name: "compileKotlin", type: MyKotlinCompile, overwrite: true) 

    Изучая исходный код … Я был уверен, что это сработает, но, очевидно, этого не произошло. Я попытался с использованием RuntimeException и без RuntimeException но всегда получаю следующее сообщение об ошибке, когда я снова gradle build выполнить gradle build :

     F:\IdeaProjects\walp.tinykotlintest>gradlew build --stacktrace :compileKotlin UP-TO-DATE :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :jar UP-TO-DATE :sourcesJar UP-TO-DATE :assemble UP-TO-DATE :compileTestKotlin FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileTestKotlin'. > java.lang.NullPointerException (no error message) * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileTestKotlin'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) . . . at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61) Caused by: java.lang.NullPointerException at org.jetbrains.kotlin.gradle.tasks.KotlinCompile$populateTargetSpecificArgs$2.invoke(Tasks.kt:215) at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.populateTargetSpecificArgs(Tasks.kt:222) at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.populateTargetSpecificArgs(Tasks.kt:148) at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.execute(Tasks.kt:105) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:243) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:230) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 60 more 

Я, вероятно, не должен делать это в любом случае … но я действительно хочу попробовать.

Спасибо!

Если стандартная библиотека Kotlin несовместима с JVM, которую вы используете, это похоже на то, что вы действительно должны делать, это fork Kotlin, внести изменения, необходимые для совместимости с вашей JVM, а затем использовать стандартный скрипт сборки Maven для создания вилки , В скрипте уже предусмотрена возможность разрешить компиляцию файлов в пакете kotlin .

Ошибка не имеет ничего общего с Gradle. Компилятор Kotlin не будет компилировать код в пакете kotlin , если вы не разрабатываете сам Котлин.

Это было сделано по той же причине, что вы не можете писать код в пакете java .

Intereting Posts
Котлин выполняет необязательное действие Как использовать RxJava2 combLatest со списком наблюдаемых в Котлине Использование AnkoLogger с уровнями, отличными от «info» Невозможно ли установить ожидания на ленивом свойстве? libGDX с ошибкой Kotlin "org.jetbrains.kotlin.kapt.idea.KaptModelBuilderService" JVM – открыть веб-страницу и запустить код Javascript Данные фильтра для FirebaseRecyclerAdapter Kotlin + JUnit + postgres для тестирования интеграции: утечка соединений Функции расширения Котлина внезапно требуют уровня api 24 Kotlin – создание изменяемого списка с повторяющимися элементами Kotlin-allopen для андроида Можно ли переместить мои файлы Kotlin в отдельный пакет (тип источника) в Android Studio? Почему я должен возвращать Unit.INSTANCE при реализации на Java функции Kotlin, которая возвращает Unit? прослушивание сокетов на клиентском и голосовом сервисе для Android-мессенджера Большое время компиляции кода Kotlin в IntelliJ