java.lang.ClassNotFoundException: afu.com.sun.source.tree.Tree$种类

java.lang.ClassNotFoundException: afu.com.sun.source.tree.Tree$Kind

将应用程序从 weblogic 12.1.3 迁移到 12.2.1 时,我们 运行 在部署 EAR 期间进入以下堆栈跟踪:

<2018-06-05 16:17:03,765> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "518856605645758" for task "2" on [partition-name: DOMAIN]. Error is: "java.lang.ClassNotFoundException: afu.com.sun.source.tree.Tree$Kind"
java.lang.ClassNotFoundException: afu.com.sun.source.tree.Tree$Kind
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1029)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:990)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:104)
        at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:611)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:543)
        Truncated. see log file for complete stacktrace

我在互联网上找不到关于这个 class 的任何信息,也找不到谁可能在使用它,所以我不知道如何解决这个问题。

问题:afu.com.sun.*包从哪里来,如何摆脱对这棵树class的依赖?

这与检查器框架 (https://checkerframework.org/) 有关。您可能只需要向类路径添加依赖项:org.checkerframework:checker-qual,或 org.checkerframework:checker-compat-qual for Java 6 or 7.

我设法通过将我们对 Guava 的依赖从 23.5-jre 更新到 24.1-jre 来解决这个问题。这为 Cliffred 提到的检查器框架添加了传递依赖。