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文件看看。