tor*_*omp 4 java eclipse velocity maven auto-value
我正在运行Eclipse Kepler SR2,并附带了带有m2e和m2e-apt插件的Maven 3.1.1,但出现错误,我不知道如何解决。
我设法找到了@AutoValue进入pom.xml 所需的所有依赖关系,但是现在我处于一种状态,即只有在需要定义的方法都具有原始返回类型的情况下,该状态才有效。如果我提供了一个返回一个Object或更具体值的抽象getter,则会出现此错误:
@AutoValue processor threw an exception:
java.lang.IllegalArgumentException:
Failed to invoke com.google.auto.value.processor.AutoValueProcessor$Property.nullable() on getObject...
Run Code Online (Sandbox Code Playgroud)
我已经尝试了基础知识-清除了Maven缓存,重新启动了Eclipse,重建了项目...没有骰子。因此,我深入研究了源代码,发现了一个不一致之处,不确定该如何解决。
在用于生成的AutoValue类的Velocity模板中,存在一些基本逻辑,用于以不同于对象的方式渲染图元,例如,在第37行,p.nullable已被检查。的p变量是的一个实例AutoValueProcessor$Property的类,其中,因为可以在前述连杆的205行可以看到,有一个isNullable()方法,但是没有nullable方法或属性。
那么Velocity渲染阶段打算如何工作?Velocity是否会自动扩展p.nullable为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();
}
Run Code Online (Sandbox Code Playgroud)
Eclipse Point在类声明的开头强调了所描述的错误。
小智 5
com.google.code.findbugs:jsr305当Eclipse运行注释处理器时,似乎缺少依赖项。尝试通过以下方法添加项目:打开项目属性,浏览至Java编译器->注释处理->工厂路径,单击“添加外部JAR”,然后选择jsr305 JAR。如果您是从命令行使用maven构建的项目,则应该能够从.m2目录中选择JAR 。
这是我的项目中属性的样子(第一个条目是Eclipse自动添加的,似乎不相关):

在AutoValue 的pom.xmlin版本1.0-rc1中,在jsr305依赖项上有一个注释“必须在运行处理器的程序中具有此函数”。发行版后,依赖项已被删除1.0-rc1,因此对于version,可能不需要将其添加到注释处理器的工厂路径中1.0。
另请参阅此博客文章,以获取有关在Eclipse中使用AutoValue的介绍。
| 归档时间: |
|
| 查看次数: |
3485 次 |
| 最近记录: |