当前位置: 首页 > 知识库问答 >
问题:

Kotlin 注释处理器:无法使其工作

姬昀
2023-03-14

我的gradle构建:

buildscript {
    ext.kotlin_version = '1.1.4-3'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: "kotlin-kapt"

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}


kapt {
    processors = "libs.orm.codeGenerators.ModelProcessor" //PROCESSOR
}


dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"

    compile "com.google.auto.service:auto-service:1.0-rc3"   
}

处理器不在单独的模块中。

处理器不做任何事情,在< code>#process中,它只是抛出,看看它是否在工作。

@AutoService(Processor::class)
@SupportedSourceVersion(SourceVersion.RELEASE_8)
class ModelProcessor : AbstractProcessor() {

    override fun process(annotations: MutableSet<out TypeElement>?, roundEnv: RoundEnvironment): Boolean {
        throw(Throwable("foo"))
        return true
    }

    override fun getSupportedAnnotationTypes() : MutableSet<String> {
        return mutableSetOf<String>("*")
    }

}

但绝对没有发生任何事情。没有错误,什么都没有。我怎样才能使它工作?

共有1个答案

督灿
2023-03-14

在我的实践中,AutoService只忽略kotlin类。您必须使用java类,或者编写自己的META-INF:

主/资源/META-INF/服务/javax.annotation.processing.Processor并包含:your.package.ModelProcessor

 类似资料:
  • 我的处理器中有一个简单的注释,如下所示: 这适用于java文件,但一旦我将文件转换为kotlin,注释的导入就不再有效。为什么? 我需要改变什么才能让他的注释也在Kotlin中工作?从文档中,我可以看到kotlin与java注释100%兼容,所以我有点困惑这里有什么问题...如果处理器不工作,需要调整以与kotlin一起工作,我会理解,但我不知道为什么导入本身不工作... 我说的图书馆在这里:ht

  • 我无法在我的Kotlin Spring Boot应用程序中正确地注入应用程序属性。在我的文件中定义并随后在文件中引用的属性(在resources->META-INF下)没有正确地添加到bean表达式上下文中。使用,当我将鼠标悬停在该属性上时,我会看到错误。试图运行应用程序(将配置属性值construction-inject到类中)会导致通过构造函数参数表示的

  • 最近,我一直试图通过Kotlin制作一个注释处理器,但我似乎无法让它工作。所有东西都会编译,我不会出现任何错误,但当我检查jar文件的内容时,我看不到我试图创建的资源。 我已经尝试了几个小时的一切,我真的卡住了,所以只是寻求帮助:/我确实有一个随机类注释,看看它是否会工作,但没有运气。 注释类 处理器类 我的建筑

  • 我想从kotlin实体类生成jpa querydsl文件。 在线上有一个很好的例子,说明如何使用gradle生成dsl文件https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-querydsl/build.gradle. 然而,我试图在maven中实现它,但没有运气。我目前的pom在下面。有人知道问题可能是什么

  • 我是匕首2和科特林的新手。获取未初始化的延迟属性。 我有一个模块,它有几个@Provides方法,但其中一个类无法创建使用@Inject和lateinit的对象。 登录服务以“LoginAPI”为参数,工作正常,但我希望所有与登录相关的API都使用相同的服务。还有一个与API相关的“LoginWithOrgAPI”。 现在我的需求是在LoginService类中获取任何需要时的API对象。所以我尝

  • 我看到一个例子解释了Kotlin JVM的KATP,它正在工作。 我想知道它是否支持Kotlin JS?有什么例子吗?