【发布时间】:2016-08-07 05:13:08
【问题描述】:
当我尝试 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 脚本来禁用此检查?
编辑:我肯定知道如果我使用裸 kotlin 编译器进行编译...here is an example 使用 kotlin 编译器编译 kotlin 包中的类...所以我认为应该有一个也可以在 gradle 中做到这一点!....我希望...
到目前为止我所做的尝试:
-
我尝试通过配置 KotlinCompile 任务来配置
gradle.build:import org.jetbrains.kotlin.gradle.tasks.KotlinCompile tasks.withType(KotlinCompile) { it.kotlinOptions.allowKotlinPackage = true }这些更改后 gradle 脚本运行良好...but it seems like this is getting ignored...我仍然遇到错误。
-
我尝试继承
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)Studying the source code...I was fairly certain this would work 但显然没有。我尝试使用和不使用
RuntimeException,但当我再次尝试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.internal....haha :x
标签: gradle build.gradle kotlin