首页 > 解决方案 > 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 的输入传递,但没有发生,这导致未定义符号问题。干净的构建工作正常

标签: gradleandroid-gradle-pluginincremental-build

解决方案


我发现了问题源文件路径是: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 上工作


推荐阅读