SnakeYaml错误:类上没有可写属性

时间:2018-01-22 17:38:11

标签: java yaml snakeyaml

我犯了一个愚蠢的错误?我是yaml的新手。不知道为什么,但我的系统没有看到名为'name'的变量。

Full error

错误:

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;
}

我可以看到这个字段,但我的系统没有。希望有人有个主意。谢谢!

1 个答案:

答案 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);