错误:
cannot create property=name for JavaBean=x.ModuleDescription@7ce6a65d
我的课程:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ModuleDescription {
private String name;
private String main;
private String version = "unknown";
private String author = "unknown";
@Setter
private File file = null;
}
我可以看到这个字段,但我的系统没有。希望有人有个主意。谢谢!
答案 0 :(得分:1)
您宣布字段name
为 private
,禁止其他任何人访问该字段。默认情况下,SnakeYAML仅加载公共字段和属性,即带有公共getter和setter的值。
因此,一个简单的解决方法是将name
的公共getter和setter添加到该类中:
public String getName() {
return name;
}
public void setName(final String value) {
name = value;
}
要加载,您需要设置器;对于倾销,你需要吸气剂。或者,您可以声明字段 public
。
如果您确实希望将该字段设为私有且不添加任何公共getter / setter,那么这也可以(未经测试):
Yaml yaml = new Yaml();
yaml.setBeanAccess(BeanAccess.FIELD);
ModuleDescription desc = yaml.loadAs(/* YAML source here */,
ModuleDescription.class);