我正在使用macroparadise 在我的项目中生成方法和案例类(宏本身是在与我使用它们的核心文件不同的项目中定义的)。
一切都按预期编译和运行,但 Eclipse 无法解析我的宏生成的变量和方法。但是,当我关闭并重新打开 Eclipse 时,它可以完美地识别所有内容;我可以将鼠标悬停在类和方法上并获取正确的信息。但是,只要我更改任何内容,甚至只是关闭并重新打开引用生成方法的文件,Eclipse 就会在所有生成的变量和方法下划线并告诉我“未找到:值 {name}”(其中 {name} 是 var 名称)。
更新
我已将行为隔离到以下情况:
- 我从一个文件中的带注释的对象 A 开始,以及在另一个文件中使用 A.hello 的对象 B。
- 我编译 A 的文件,将方法“hello”添加到对象 A。
- 一切正常,直到(!)我重新打开包含对象 A 的文件。
问题:当我打开一个文件时,Eclipse 会做什么?它是否尝试根据写入的文件而不是编译的文件重新索引一个类?
结束更新
Eclipse 如何解析变量?它是否正在查看我的目标/文件夹中的类文件?我的所有生成代码都有 *.class 文件,所以如果 Eclipse 正在查看这些文件,这些变量应该确实存在。
有没有人让 Eclipse 正确解决这些变量?我尝试了 IntelliJ IDEA,但 IDEA 无法使用隐式转换和宏来解决任何问题(我遵循了我在网上找到的指示,但没有运气)。
信息:
面向 Java 开发人员的 Eclipse IDE
版本:氧气发布 (4.7.0)内部版本
号:20170620-1800
Scala 插件
scala-ide.org
4.4.1.v-2_11-201605041057-92a3ed3
org.scala-ide.sdt.feature
编译插件:
macroparadise
org.scalamacros Paradise_2.11.8
version
2.1.0