FindBugs IDEA - ClassNotFoundException com.google.wireless.android.sdk.stats.IntellijIndexingStats

FindBugs IDEA - ClassNotFoundException com.google.wireless.android.sdk.stats.IntellijIndexingStats

FindBugs IDEA v1.0.1 Android Studio 3.4

我在 运行 FindBugs 时收到此错误。 我没有在应用程序的任何地方使用 com.google.wireless.android.sdk。

Error:Internal error: (java.lang.ClassNotFoundException) com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index
java.lang.ClassNotFoundException: com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.intellij.util.indexing.counters.IndexCounters.<clinit>(IndexCounters.java:34)
    at com.intellij.util.indexing.impl.MapReduceIndex.<init>(MapReduceIndex.java:86)
    at org.jetbrains.jps.backwardRefs.index.CompilerReferenceIndex$CompilerMapReduceIndex.<init>(CompilerReferenceIndex.java:214)
    at org.jetbrains.jps.backwardRefs.index.CompilerReferenceIndex.<init>(CompilerReferenceIndex.java:73)
    at org.jetbrains.jps.backwardRefs.JavaCompilerBackwardReferenceIndex.<init>(JavaCompilerBackwardReferenceIndex.java:12)
    at org.jetbrains.jps.backwardRefs.JavaBackwardReferenceIndexWriter.initialize(JavaBackwardReferenceIndexWriter.java:74)
    at org.jetbrains.jps.backwardRefs.JavaBackwardReferenceIndexBuilder.buildStarted(JavaBackwardReferenceIndexBuilder.java:40)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:358)
    at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:178)
    at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138)
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:302)
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:135)
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0[=11=](BuildMain.java:229)
    at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread[=11=](SharedThreadPoolImpl.java:42)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我想这可能就是答案。

SpotBugs 是 FindBugs 的精神继承者,在其社区的支持下从中断的地方继续前进。

The FindBugs Plugin

Since FindBugs is unmaintained and does not support bytecode compiled for Java 9 and above, the FindBugs plugin has been deprecated and is scheduled to be removed in Gradle 6.0. Please consider using the SpotBugs plugin instead.

You should have at least 512 MB of memory 使用 SpotBugs。要分析非常大的项目,可能需要更多内存。

非常重要的问题Unable to use Spotbugs in Android application

此解决方案基于以下假设:您使用 Android Studio for Flutter 并且 Android 两者都使用。每次我关闭 Flutter 项目并打开 Android 项目时,我需要配置 android Sdk 否则它会给我这个错误:

Error:Internal error: (java.lang.ClassNotFoundException) 
com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index

只需转到 LogCat 并单击 "Please configure Android SDK" 和 select 我猜最新的构建工具版本 28.0.3(或任何最新的构建版本)来自下拉菜单。

打开 FindBugs 设置,单击常规,然后关闭 "Compile affected files before analyze"。它适用于 Android Studio 3.5

我在使用 JDK 1.8 时遇到了类似的错误。该错误是由缺少密钥库文件引起的。尝试使用 JDK 12 中的密钥工具生成新的密钥库。这对我有用。

根据你的 gradle 版本可能还需要添加一些依赖项和 maven 存储库 Android注释版本:

4.3.1

Android编译SDK版本:

25

这为我消除了错误:

File/Settings/Build,执行,Deployment/Compiler

取消勾选:自动创建项目

对于它的价值,我通过导入一个使用 IntelliJ Pro 启动的项目并导入到 Android Studio 中得到了这个确切的错误 - 删除项目根目录下的 .idea 目录并重新导入Android Studio 的项目清除了它。

我在没有 运行 FindBugs 的 Android Studio 中遇到了这个错误。

我最初看到 an IntelliJ post 建议我在 IntelliJ 注册表中禁用基于编译器的索引以停止错误:

as a workaround for the exception you may set compiler.ref.index = false in Registry (ctrl+alt-shift+/ or via "find action by name" action)

但是,我不想满足于丢失基于编译器的索引,在执行 Invalidate Caches / Restart... 之后,我看到了以下消息:

Internal caches are corrupted or have outdated format, forcing project rebuild

这条消息让我找到了 pdinklag's answer, which I modified slightly for Android Studio

我关闭了 Android Studio,然后 运行:

rm -rf ~/.android
rm -rf <PROJECT_ROOT>/.idea

然后重新启动 Android Studio,一切正常。

似乎 FindBugs 无法在分析前编译文件。

在 Android Studio 中,转到 FindBugs 设置(位于文件 > 设置 > 其他设置下),然后取消选中 "Compile affected files before analyze"。

执行此操作时,您需要自己编译文件(例如,通过构建和 运行 应用程序),或者 FindBugs 分析使用旧文件数据(来自以前的构建)。

要在 Android Studio 中解决此问题,请转到:

文件
-> 设置
-> 构建、执行、部署
-> 编译器 -> Java 编译器

javac 更改为 eclipse,然后应用。