尝试使用默认YAML文件进行播放时出现NoClassDefFoundError!框架应用

时间:2013-10-28 17:10:47

标签: java playframework playframework-2.0 classloader

我正在尝试开发一个应用程序,它使用ebean创建数据库,然后使用play framework 2.2.0在网页中显示表格 这些是我的模型类,我也在内存数据库中使用。

Parents.java:

    @Entity
    @Table(name="parents")
    public class Parents extends Model {

    @GeneratedValue
    public Long id;

    @Id 
    @Constraints.Required
    public String name;

    @OneToMany(mappedBy="parent", cascade = CascadeType.ALL)
    public List<Children> childs = new ArrayList<Children>();
    }

这是Children.java:

    @Entity
    @Table(name="children")
    public class Children extends Model {

    @GeneratedValue
    public Long id;

    @Id
    @Constraints.Required
    public String name;

    @ManyToOne
    public Parents parent;
    }

我已将Global.java设置为加载默认的.yml文件。该文件如下所示:

parents:
    - !!models.Parents
        id: 1
        name: MOM
        childs:
            - !!models.Children
                 name: SON

children:
    - !!models.Children
        id:              1
        name:            SON
        parent:          !!models.Parents
                              name: "MOM"

而且,这是我的Global.java文件:

public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
    // Check if the database is empty
    if (Ebean.find(Parents.class).findRowCount() == 0) {
        @SuppressWarnings("unchecked")
    Map<String,List<Object>> all =  Map<String,List<Object>>)Yaml.load("default.yml");

    Ebean.save(all.get("parents"));
    Ebean.save(all.get("children"));
    }
}

}

Evolution脚本运行没有错误,应用程序一开始工作正常。但经过几次运行,我得到了这个错误(我不记得我在模型中改变了什么):

Unexpected exception
NoClassDefFoundError: Models/Children (wrong name: models/Children)

我对YAML格式并不熟悉。所以我认为必须是它,并且令人惊讶的是我甚至通过在试错的基础上更改我的yaml文件格式来成功解决错误。但是在我退出框架控制台并再次运行它之后,我再次收到错误,这次我再也无法解决它了,我怀疑它可能有更深层次的根源。我尝试使用干净并在播放控制台重新编译但没有成功。我甚至尝试重新启动计算机(遵循臭名昭着的IT人群建议:您是否尝试过将其关闭再打开?!)无济于事。顺便说一下,我是Java编程和Stack Overflow的新手,所以我发布的内容可能会出现巨大而重大的错误。谢谢你的帮助和时间。

0 个答案:

没有答案