3

尝试在我的 java 类中使用包 com.google.auto.value.AutoValue 的 AutoValue 并得到错误“AutoValue 无法解析为类型”

我在 pom.xml 中添加了这个

<!-- https://mvnrepository.com/artifact/com.google.auto.value/auto-value -->
<dependency>
    <groupId>com.google.auto.value</groupId>
    <artifactId>auto-value</artifactId>
    <version>1.2</version>
    <scope>provided</scope>
</dependency>

Java程序:

package xxxx;

import ------
import com.google.auto.value.AutoValue;

@AutoValue
@DefaultCoder(SerializableCoder.class)
public abstract class ABC{
  /**
   * Manually create a test row.
   */
  public static ABC create(List<Object> fields) {
    return new AutoValue_ABC(fields); //error is here
  }

  public abstract List<Object> fields();
}

我尝试了通过打开项目属性添加它的解决方案,浏览到 Java 编译器 -> 注释处理 -> 工厂路径,单击“添加外部 JAR”,然后选择 4 个 jar 文件 - auto-service-1.0-rc1.jar ,番石榴-16.0.1.jar,jsr-305-2.0.3.jar,自动值1.0-rc1.jar

还尝试添加 m2e-apt 插件和 Maven ->“注释处理”-> 选择“自动配置 JDT APT...”

仍然收到错误“无法将 AutoValue 解析为类型”

任何解决方案?提前致谢。

4

1 回答 1

0

看来你有点过时了。最新版本的自动值是 1.6.5。

您不仅必须导入自动值,还必须导入自动值注释。来自auto-value 的官方文档:

<dependency>
  <groupId>com.google.auto.value</groupId>
  <artifactId>auto-value-annotations</artifactId>
  <version>1.6.2</version>
</dependency>
<dependency>
  <groupId>com.google.auto.value</groupId>
  <artifactId>auto-value</artifactId>
  <version>1.6.2</version>
  <scope>provided</scope>
</dependency>

这就是 maven 所需要的一切。对于 eclipse,您似乎看过 Code Affine。他们关于自动价值的文章有点令人困惑。您只需要自动值和自动值注释。使用自动值不需要 Guava、auto-service 和 jsr。

至少,这对我有用。

于 2019-07-25T10:44:23.103 回答