问题标签 [kapt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1463 浏览

java - kotlin 注释处理:检查给定的 TypeElement 是否来自 kotlin-class

我正在实现注释处理库,该库使用基于具有特定注释的类的 Java Pot 生成代码。

为了也使用用 kotlin 编写的类,我在示例项目中切换到了 kapt 而不是 apt。它适用于带注释的 java 类就好了。Bun kotlin-classes 对访问类字段有不同的方法:应该使用 getter 和 setter。

有没有办法确定给定的类(更具体地说 - 不是类而是 TypeElement - 因为这是在编译之前发生的)是 java 类还是用 kotlin 编写的?基于此,我可以编写生成字段访问或 getters-used 访问的代码。

0 投票
1 回答
470 浏览

android - Kapt gradle 任务异常:类转换异常

任务 ':app:kaptSomethingDebugKotlin' 执行失败。

我重构了我的一些类,并添加了一些 kotlin 类和具有裸函数的类。

当我尝试编译项目时,会发生这些奇怪的事情,并且异常堆栈跟踪都没有帮助我。

看来这个问题是由于 Kotlin java 组合造成的

0 投票
0 回答
555 浏览

android - Kotlin + Dagger 注入问题取决于设备的 Android 版本/SDK(?)

上周,在我当前的 Kotlin MVP 项目中实现 Dagger 时,我正在使用KitKat 4.4.2 的旧手机上测试它(是的,它仍然支持所有主要的材料特性和东西 :)),因为主要手机的维护。所以那一周我遇到了典型的问题,而不是一些不寻常的问题,并通过调查提供的错误或多或少地快速修复了它们。最后,代码编译,当前项目版本构建没有问题,并且在 KitKat 与 UI 交互上运行没有重大错误。

但是,当我从维修中心拿起带有Nougat 7.1.2 的主手机并在其上启动应用程序时,我遇到了与 DI 相关的奇怪问题。在那之后,我还在 mate 的Marshmallow 6.0 上启动了应用程序,又抓到了一个,完全一样。以这种方式简要描述了该问题:

  • 应用程序(成功)启动;

  • 我能够操作通过 context 和 fragmentManager 注入提供的 ViewPager/DrawerLayout/etc ui 功能;

  • 所有服务也都可用并按预期通过注入运行;

  • 当我抽动 Activity 的 Presenter 时,应用程序崩溃了。

现在最有趣的部分让我发疯了:所有可访问的类,不会带来任何问题,都是通过构造函数注入来注入的。

但是使用field injection注入的 Presenter 实例在需要时不会被初始化。

当然,我尝试不使用 lateinit 修饰符,并像使用 @JvmField 或没有它的可空字段一样注入它:结果是相同的 - 它根本没有注入。

由于问题与 相关Activity,我有“自然约束”不使用主构造函数进行注入。

这是一个例外,除了第一个字符串外,它对我的​​信息量不是很大:

这是一些代码:

应用程序:

应用组件:

应用模块:

基本活动模块:

目前我有一个广泛分支的 MVP 模型,所以每个活动/片段都有 1 个视图模块和 1 个演示器模块,所有常见的注入都通过基类进行交互。这是活动 DI 部分的示例:

基本活动:

使用构造函数注入的示例 - MainPresenter(所有注入都有效 - 这里没有问题):

下面是所有“魔法”开始的地方——var presenter在任何情况下都不会初始化。

但是,如前所述, KitKat上不会发生这种情况- 应用程序正在其上运行,没有任何问题。所以,再一次:我认为当应用程序在Marshmallow+上运行时存在问题(不幸的是,还不知道 Lollipop)。

我真的想知道以前是否有经验丰富的人遇到过这样的问题。没有构建错误,完全没有 dagger 异常;只是未初始化的属性。

它可能与某种方式的许可有关吗?我拥有的唯一危险许可是设备的位置访问权限,并且已经过持有和测试。

毕竟,如果存在支持/版本控制问题的可能性,它可能与其他方面有关吗?

提前致谢。

升级版:

似乎演示者实例被绑定Activity它之后onCreate(),但是当触发一些回调操作时,活动作为侦听器的角色被取消绑定。因此,看起来 Kotlin 再次查找 Presenter,但发现它未初始化。仍然不明白为什么这只发生在较新的平台上。

0 投票
2 回答
698 浏览

android - 创建 XML 文件时出现 Kapt 异常

我在 Android Studio 上的 Kotlin 工作。

该项目编译并完美运行,但是当我尝试创建一个新的 XML 文件时,我不断收到一个 kapt 异常“注释处理时异常”。

我尝试通过右键单击 res 文件夹 -> 新建 -> 布局资源文件来创建 XML 文件,我还尝试通过右键单击 res 文件夹 -> 新建 -> XML -> 布局 XML 文件。

这是我的完整项目 gradle :

这是我的完整应用程序 gradle:

我尽力了,我在互联网上搜索以解决这个错误。所以我的问题是:如何安全地创建 XML 文件而不会出现此错误?或者,如果这是不可能的,我该如何解决这个 Kapt 异常?

谢谢

0 投票
1 回答
1385 浏览

unit-testing - 如何包含注释处理器生成的代码来测试 Java/Kotlin 中的类路径

我有一个 Android 项目正在从 Java 迁移到 Kotlin。在这个项目中,我有一个纯 Kotlin 模块,我在其中使用以下 build.gradle 实现 API 客户端:

单元测试有一个注释处理器依赖项:

我可以在 build/generated/source/kapt/test 目录下看到生成的源,但它们对测试源不可见,即无法导入生成的 DaggerUnitTestComponent 以注入依赖项,例如。而且我很难完成它。

借助此 StackOverflow 答案和添加到 build.gradle 的以下代码段,我已经在 Android 项目上成功完成了这种事情,但对于纯 Kotlin/Java 项目,它不适用。

可以说我使用的是 Android Studio 3.0.1 和 Kotlin 1.2.10。Kotlin 库模块的来源位于 src/main/java 和 src/test/java。

0 投票
1 回答
327 浏览

maven - 如何使用 maven kapt 设置参数

如何在maven中设置kotlin-maven-plugin?这是gradle脚本:

谢谢!

0 投票
0 回答
155 浏览

dagger-2 - 处理 dagger2 代码时出现 kapt 错误

在 ClientModule.kt

在 AppModule.kt 中

错误消息是:

太奇怪了,生成的 java 文件将我的函数签名从 List<Interceptor> 更改为 List

以下是生成的文件:

如何阻止 kapt 更改我的函数签名?

0 投票
1 回答
2466 浏览

java - 找不到字段的吸气剂

我正在尝试使用两个模块构建一个 Android 应用程序项目,其中一个包含 Kotlin 代码。我在构建时收到以下错误,我不知道如何修复它。

警告和错误(粗体):

这是相关的类文件:

C:\android_workspace\anapp_android\VideoApp\core\build\tmp\kapt3\stubs\debug\co\acompany\videoapp\db\model\DbChannelDetails.java:

0 投票
2 回答
384 浏览

android - Android 支持库 Bump 27.1.0 由于“kapt”而无法编译

我正在尝试将我的 Android 应用程序的支持库依赖项从 27.0.2 升级到 27.1.0。这样做并尝试组装应用程序时,编译失败。

对于我正在使用的 kotlin 数据绑定:kapt "com.android.databinding:compiler:3.0.1"

对于我正在使用的科特林:implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.30"

这是尝试编译时产生的堆栈跟踪

我认为问题出在 kotlin 上,考虑到编译异常被捕获在KaptTask.kt:124. 但是我无法确定我的应用程序需要更改哪些内容才能成功编译。

任何帮助是极大的赞赏!提前致谢。

0 投票
2 回答
710 浏览

java - IntelliJ 未获取多模块项目中的 Spring 配置元数据

我有以下多模块布局:

该库包含@ConfigurationProperties并依赖于生成spring-configuration-metadata.json文件所需的东西。所有这一切都完美无缺。该应用程序依赖于库,它可以在其中找到类,使用 Spring 自动装配,......好吧,一切正常。

但是,IntelliJ 不会spring-configuration-metadata.json从库中提取文件,因此无法识别application.yml应用程序文件中的这些选项。

如何让 IntelliJ 知道spring-configuration-metadata.yml它应该加载的其他文件?