1

我有两个项目。其中之一是projectA注释处理器。第二个,projectB用作projectA依赖项。现在这个处理器是toJson在最终编译之前添加到存在类的方法。一切正常。当我编译projectBprojectA的运行并修改存在的源文件和添加toJson方法时。此外,intellij 会自动检测此处理器并自动将我的自定义处理器配置到处理器路径。但编辑给出错误Cannot resolve method 'toJson' in 'CacheData'。我该如何解决这个问题?

下图是我的 intellij 配置。如您所见,IDEA 会自动从我的 pom.xml 中检测到我的处理器,但编辑器无法识别生成的代码 智能配置

我使用IntelliJ IDEA 2021.3 (Ultimate Edition), maven-3.8.1,jdk-1.8表示处理器(projectAjdk-11projectB

4

1 回答 1

0

最后我解决了我的问题。似乎当前版本的 Intellij 仅支持自动生成的类。但是,如果您使用annotation processorIntellij 编辑器修改现有文件,则无法识别您的更改并显示为错误。非常感谢 @mplushnikov的 lombok-intellij-plugin。我只是为 IntellIJ 创建自己的插件并添加依赖项。完成此操作后,您需要覆盖一些入口类并添加您自己的注释及其处理器处理程序并从AbstractClassProcessor

让我分享一些例子,如果有这个问题的人可以使用它。

面向初学者的IntellIJ 插件教程

以下代码片段来自我的plugin.xml. 首先,您需要向插件添加一些依赖项

<depends>com.intellij.modules.lang</depends>
<depends>com.intellij.modules.platform</depends>
<depends>com.intellij.modules.java</depends>
<depends>Lombook Plugin</depends> <!-- this is the lombok-intellij-plugin-->

第二步是为您的插件添加所需的扩展,如下所示

 <extensions defaultExtensionNs="com.intellij">
  <!-- Add your own custom processor. because lombok plugin default search only lombok package and own annotations -->
  <lang.psiAugmentProvider implementation="your_package.AugmentProviderImpl"/>
  <!-- if you packaged your classes other than lombok   -->
  <codeInsight.externalLibraryResolver implementation="your_package.ExternalLibraryImpl"/>
  <implicitUsageProvider implementation="your_package. ImplicitUsageProviderImpl"/>

  <!-- Add your custom annotation processor handler and extend it from   AbstractClassProcessor -->
  <applicationService serviceImplementation="your_package.CustomAnnotationProcessor"/>
 </extensions>

而已。按照这些步骤,构建您的插件并安装它。重新启动后,由您自己的注释生成的类的方法将被 intellij 识别。

实现类并不难。只需查看lombok-intellij-plugin源代码并复制所需的文件并对其进行修改即可。

于 2021-12-05T20:13:25.503 回答