> 文档中心 > IDEA编译:“错误: 找不到符号”问题解决

IDEA编译:“错误: 找不到符号”问题解决

错误信息

在使用IDEA +maven编译项目的时候,实体类报了个'错误: 找不到符号"错误

感觉有点无辜躺枪的感觉。

我们先看下报错的代码

报错代码

@Data@EqualsAndHashCode@Accessors(chain = true)@TableName("u_store")@ApiModel(value = "store实体" , description = "浏览")public class StoreEntity extends BaseEntity implements Serializable {    private static final long serialVersionUID = 1L;    @ApiModelProperty(value = "ID")    @TableId(value = "id" , type = IdType.AUTO)    private Integer id;     @ApiModelProperty(value = "关联名")    private String name;    @ApiModelProperty(value = "类型")    private Integer type;    @ApiModelProperty(value = "排序")    @Builder.Default    private Integer sort = 0;}

这是个最简单的实体方法了,啥都没做

报了这个异常,感觉整个人都抑郁了。

 解决思路

只能一行行的删代码的方式,去慢慢排查了。

解决方案

后来发现,删除 @Builder.Default,代码编译就OK了

仔细检查了下,发现是没有添加@Builder注解

坑爹哈,为什么不在编译中明确指出来呢?

@Data@Builder@NoArgsConstructor@AllArgsConstructor@EqualsAndHashCode@Accessors(chain = true)@TableName("u_store")@ApiModel(value = "store实体" , description = "浏览")public class StoreEntity extends BaseEntity implements Serializable {    private static final long serialVersionUID = 1L;...

总结

就两个注解的事情。浪费了半个多小时。

正常来讲,注解是不能在编译中发现的。注解是运行时动态去识别的。只有在运行的时候才会被触发。编译是不能识别的。

那么@Builder为什么能够识别呢?

那是因为,Lombok中的相关注解都是用来辅助编译的,它编译完成之后,代码里面有Builder模式的代码了。不信的话你可以找下对应的class文件看看。