m2e および m2e-apt プラグインに接続された Maven 3.1.1 を使用して Eclipse Kepler SR2 を実行していますが、解決方法がわからないというエラーが表示されます。
pom.xml で機能するために必要なすべての依存関係を見つけることができました@AutoValue
が、現在、定義する必要があるメソッドがすべてプリミティブな戻り値の型を持っている場合にのみ機能する状態になっています。Object
またはより具体的なものを返す抽象ゲッターを提供すると、次のエラーが発生します。
@AutoValue processor threw an exception:
java.lang.IllegalArgumentException:
Failed to invoke com.google.auto.value.processor.AutoValueProcessor$Property.nullable() on getObject...
私は基本を試しました-mavenキャッシュをクリアし、Eclipseを再起動し、プロジェクトを再構築しました...サイコロはありません。そのため、ソース コードを掘り下げたところ、どのように解決するつもりなのかわからない不一致が見つかりました。
生成された AutoValue クラスのVelocity テンプレートには、プリミティブをオブジェクトとは異なる方法でレンダリングするための基本的なロジックがいくつかあります。たとえば、37 行目p.nullable
でチェックされます。p
変数は class のインスタンスであり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();
}
EclipsePoint
は、クラス宣言の先頭で説明されているエラーを強調表示します。