尝试在我的 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 , guava-16.0.1.jar , jsr-305-2.0.3.jar , auto-value-1.0-rc1.jar
还尝试添加 m2e-apt 插件和 Maven -> “Annotation processing” -> 选择“Automatically configure JDT APT...”
仍然出现错误“AutoValue cannot be resolved to a type”
任何解决方案? 提前致谢。
最佳答案
看来你有点过时了。 auto-value 的最新版本是 1.6.5。
您不仅要导入自动值,还要导入自动值注释。来自 official documentation of 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 与 auto-value 一起使用不是必需的。
至少,这对我有用。
关于java - AutoValue 无法解析为类型 - Eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55176365/