我正在運行Eclipse Kepler SR2,Maven 3.1.1附有m2e和m2e-apt插件,並且出現一個我不知道如何解決的錯誤。Eclipse AutoValue類無法生成
我設法找到所有依賴關係,以便@AutoValue
工作到我的pom.xml中,但現在我處於只在需要定義的方法全部具有原始返回類型時才起作用的狀態。如果我提供了一個抽象的getter返回一個Object
或更具體的,我得到這個錯誤:
@AutoValue processor threw an exception:
java.lang.IllegalArgumentException:
Failed to invoke com.google.auto.value.processor.AutoValueProcessor$Property.nullable() on getObject...
我已經試過了基礎 - 清除緩存行家,重新啓動Eclipse中,重建項目...沒有骰子。所以我深入瞭解了源代碼,發現了一個不一致的地方,我不確定它是如何解決的。
在生成的AutoValue類的Velocity template中,存在一些基本邏輯,用於以不同於對象的方式呈現基元,例如在第37行上,檢查p.nullable
。 p
變量是AutoValueProcessor$Property
類的實例,其可以在前面的鏈接的第205行中看到,具有isNullable()
方法,但沒有nullable
方法或屬性。
速度渲染階段是如何工作的呢?速度自動擴展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();
}
的Eclipse突出類聲明的頭部Point
下所描述的錯誤。
VTL擴展了對任何屬性或方法的引用,但我想知道這是否與您的問題有關。 getter方法是否返回一個可爲空的對象(例如,您是否使用@Nullable註釋它)?如果沒有,您的測試是否將其設置爲非空值? – pmorken
@ pmorken在註解處理階段(AutoValueProcessor運行期間),錯誤不在測試中,因此在編譯時沒有運行時對象。我已經嘗試將getter設置爲'@ Nullable','@ NonNull',並且都沒有,但都產生相同的結果。 – torquestomp
我按照[Autovalue Github頁面](https://github.com/google/auto/tree/master/value)上的說明創建了一個[示例應用程序](https://github.com/manish-in -java /谷歌-autovalue)。它運行良好。我已經從命令行(Maven 3.1.1),Eclipse Kepler(帶有m2e)和IDEA 13運行了這個示例。您可以提供類的代碼以及運行錯誤的字段嗎?當你從命令行運行Maven時,你的代碼是否工作? – manish