【发布时间】:2021-05-20 14:18:20
【问题描述】:
我遇到了与ClassCastException in ant schemagen task using jaxb-ri-2.2.7 相同的问题。但是,我最大的问题不是问题本身,而是错误日志中的异常:
java.lang.ClassCastException: com.sun.tools.javac.api.JavacTrees cannot be cast to com.sun.source.util.Trees
通过查看问题,发现JavacTrees是DocTrees的子类,DocTrees是Trees的子类。具体来说,类定义是:
public class JavacTrees extends DocTrees {
// ...
}
public abstract class DocTrees extends Trees {
// ...
}
public abstract class Trees {
// ...
}
上面的ClassCastException 基本上意味着一个对象无法转换为它的父类。我不记得在我读过的任何教科书中有类似的内容。
有人可以向我解释这个例外吗?谢谢。
【问题讨论】:
-
哪一行抛出异常?
-
这听起来像是一个类加载器问题。如果由不同类加载器加载的这两个类在它们之间不起作用。这个问题似乎是关于一个类似的问题(和一个可能的解决方案):stackoverflow.com/questions/25110407/…
-
@OHGODSPIDERS "如果由不同类加载器加载的这 2 个类在它们之间不起作用。"抱歉,我不熟悉类加载器。请问是否有指针让我看到这个声明?谢谢。
-
@OHGODSPIDERS 我做了一个快速演示来测试这种行为:github.com/johnlinp/misc-demo/blob/master/…。谢谢。
标签: java casting javac tools.jar