Tag: auto value

Eclipse AutoValue类无法构建

我正在运行Eclipse Kepler SR2,Maven 3.1.1附带了m2e和m2e-apt插件,我收到一个错误,我不知道如何解决。 我设法找到使@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… 我已经尝试了基础知识 – 清除了maven缓存,重新启动了Eclipse,重建了项目……没有骰子。 所以我深入研究了源代码,发现了一个差异,我不确定它是如何解决的。 在生成的AutoValue类的Velocity模板中,有一些基本逻辑用于渲染基元,而不是对象,例如在第37行,检查p.nullable 。 p变量是AutoValueProcessor$Property类的一个实例,可以isNullable()一个链接的第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 […]

无法使用AutoValue和IntelliJ解析符号

我一直在尝试为IntelliJ的注释处理找到正确的设置,以便它与Gradle的构建过程共存。 每当我使用IntelliJ构建时,我都无法识别gradle-apt-plugin中生成的源代码。 我对我的项目的要求是: IntelliJ和Gradle之间的构建应该是无缝的,不会干扰彼此的过程 我需要使用IntelliJ的每个源集创建单独的模块选项 我需要使用IntelliJ的基于文件夹的结构 IntelliJ需要能够识别并自动完成AutoValue类 以下是使用IntelliJ 2017.2.4和Gradle 3.5重现问题的MCVE的步骤: 从IntelliJ创建一个新的Gradle项目 选中“为每个源设置创建单独的模块”选项 打开build.gradle文件: 添加以下plugins块: plugins { id ‘java’ id ‘net.ltgt.apt’ version ‘0.12’ } 添加以下dependencies块 dependencies { compileOnly ‘com.google.auto.value:auto-value:1.5’ apt ‘com.google.auto.value:auto-value:1.5’ } 转到设置→构建,执行,部署→注释处理器 选中“ 启用注释处理” 创建一个类: @AutoValue public abstract class GeneratedSourcesTest { static GeneratedSourcesTest create(String field) { return new AutoValue_GeneratedSourcesTest(field); } public abstract String field(); } […]