我正在运行 Eclipse Kepler SR2,其中 Maven 3.1.1 附加有 m2e 和 m2e-apt 插件,但我收到一个错误,我不知道如何解决。
我设法找到了获得所需的所有依赖项@AutoValue https://github.com/google/auto/tree/master/value工作到我的 pom.xml 中,但现在我处于一种状态,只有当需要定义的方法都具有原始返回类型时它才起作用。如果我提供一个返回一个抽象 getterObject
或者更具体地说,我收到此错误:
@AutoValue processor threw an exception:
java.lang.IllegalArgumentException:
Failed to invoke com.google.auto.value.processor.AutoValueProcessor$Property.nullable() on getObject...
我已经尝试了基础知识 - 清除 Maven 缓存,重新启动 Eclipse,重建项目...没有骰子。因此,我深入研究了源代码,发现了一个差异,我不确定如何解决它。
In the 速度模板 https://github.com/google/auto/blob/master/value/src/main/java/com/google/auto/value/processor/autovalue.vm对于生成的 AutoValue 类,有一些基本逻辑用于以不同于对象的方式呈现基元,例如第 37 行,p.nullable
已检查。这p
变量是一个实例AutoValueProcessor$Property https://github.com/google/auto/blob/master/value/src/main/java/com/google/auto/value/processor/AutoValueProcessor.java类,正如前面链接的第 205 行所示,它有一个isNullable()
方法,但是没有nullable
方法或属性。
那么速度渲染阶段是如何工作的呢? Velocity是否自动扩展p.nullable
to p.isNullable
有些怎么样,但不适合我,因为什么原因?这是一个错误吗?我不知道从这里该做什么。
无法编译的示例类:
@AutoValue
public abstract class Point {
public static Point of(double x, double y) {
return new AutoValue_Point(x, y);
}
public abstract Double x();
public abstract Double y();
}
Eclipse 突出显示了下面描述的错误Point
位于类声明的开头。