Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'c
这个错误信息表明你正在使用Java编译器的内部API,即com.sun.tools.javac.tree.JCTree$JCIrel类,并尝试访问一个不存在的成员字段'c'。

解释:

com.sun.tools.javac.tree.JCTree$JCIrel是Sun/Oracle JDK中Java编译器的内部类,用于表示Java语法树中的关系节点。这个错误通常发生在使用了编译器内部API的代码中,而该API在不同版本的JDK中可能会发生变化,导致代码尝试访问一个在当前JDK版本中不存在的成员。

解决方法:

不要使用内部API。官方不推荐直接使用这些API,因为它们可能在未来的JDK版本中发生变化或者被移除。

如果你需要访问这样的成员,应该寻找公共API的替代方法来实现你的需求。

如果你正在编写一个编译器插件或者修改编译器行为,应该使用Java编译器的插件机制,而不是直接依赖内部API。

如果你的代码是基于旧版本的JDK编写的,考虑将项目升级到最新的JDK版本,并修改任何已经不适用的API调用。

如果你确实需要使用类似的功能,你应该查找官方文档或者社区提供的相关工具和方法来实现你的需求。


项目为jdk1.8,但是项目自动配置成了jdk21,导致无法找到指定成员

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐