gradle - Gradle 增量 Java 构建失败并出现“找不到符号错误”
问题描述
当我对 Java 文件进行更改时,构建失败
Android Gradle 插件:3.2.1 Gradle 版本:4.6
请在下面找到错误的快照:
17:58:31.131 [ERROR] [system.err] symbol: class FragmentNavigationManager
17:58:31.132 [ERROR] [system.err] location: package com.microsoft.office.officemobile.FragmentManagerInfra
17:58:31.138 [ERROR] [system.err] D:\Office\dev\officemobile\android\Java\src\com\microsoft\office\officemobile\ActionsTab\ActionsAdapter.java:45: error: cannot find symbol
17:58:31.138 [ERROR] [system.err] import com.microsoft.office.officemobile.KaizalaPhoneauth.KaizalaPhoneAuthManager;
我检查了源文件 FragmentNavigationManager.java 文件中是否存在未定义的符号。
使用调试日志,我发现FragmentNavigationManager.class
在进行 java 构建之前类文件已被删除
gradle: 17:58:28.630 [DEBUG] [org.gradle.api.internal.file.delete.Deleter] Deleting d:\office\build\droidarm\ship\officemobile\android\java\intermediates\javac\release\compileReleaseJavaWithJavac\classes\com\microsoft\office\officemobile\FragmentManagerInfra\FragmentNavigationManager.class
删除上述类后,在进行 Java 增量构建时,FragmentNavigationManager.java
应将其作为 javac 的输入传递,但没有发生,这导致未定义符号问题。干净的构建工作正常
解决方案
我发现了问题源文件路径是:src\com\microsoft\office\officemobile fragmentmanagerinfra \FragmentNavigationManager.java
生成的类文件:intermedias\javac\release\compileReleaseJavaWithJavac\classes\com\microsoft\office\officemobile FragmentManagerInfra \FragmentNavigationManager.class
源路径和生成的类路径的目录名称大小写不匹配,这导致了问题。源路径有 fragmentnavigationmanager 而不是 FragmentNavigationManager
我发现包名是:com.microsoft.office.officemobile.FragmentManagerInfra.FragmentNavigationManager。更改目录名称以匹配源路径中的包名称可解决问题
这是预期的吗,因为完整构建工作正常而增量 Gradle 构建只是失败了?在 Windows 10 上工作
推荐阅读
- php - 如何在 PHP 中使用带有特定键的数组时按 ASC 顺序推送
- laravel - 如何提高我的 Laravel 性能?
- django - 我如何为不在数据库中创建表的 Django 管理员创建模型或表单?
- php - php时间计算问题
- python - Sklearn OneVsRestClassifier - 获取目标类所有可能性的概率
- codenameone - 仅在选择特定选项卡时解析数据
- php - 使用 PHP 阅读电子邮件内容
- machine-learning - 如何将训练数据集拆分为训练、验证和测试数据集?
- python - 使用 skimage 提取图像区域
- android - 录制暂停后如何在同一视图中播放录制的视频?