【问题标题】:play framework 2.1 junit test not working from eclipse播放框架 2.1 junit 测试在 Eclipse 中不起作用
【发布时间】:2013-02-16 18:26:49
【问题描述】:

我按照 zentask 教程编写了一个 junit 测试, 测试不会从 Eclipse IDE 运行,它会给出以下异常

javax.persistence.PersistenceException: java.lang.IllegalStateException: Class [class play.db.ebean.Model] is enhanced and [class models.User] is not - (you can not mix!!)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1475)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1138)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1058)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:565)
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:252)
    at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:124)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:210)
    at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:64)

我读了一点,发现对于某些人来说 编辑 buils.scala 在 main 中添加以下行有帮助:ebeanEnabled := true

对我来说,它并没有关闭运行 play clean compile 的 ide

有什么想法???

【问题讨论】:

    标签: java eclipse playframework-2.0 playframework-2.1


    【解决方案1】:

    blog post 关于设置单元测试以在 IDE 中运行。它建议在运行测试时使用的 java 添加以下命令行:

    -javaagent:/path/to/ebean/ebean-2.7.3-agent.jar
    

    好像Play没有附带ebean代理,应该先从Ebean网站下载(在主ebean包中)。

    我没试过。

    Ebean user guide 也提到了它(15.5.2 javaagent 部分),甚至还有配置 Eclipse 的示例。

    另外,为了加快增强,也许这会更好:

    -javaagent:/path/to/ebean/ebean-2.7.3-agent.jar;packages=models.*
    

    所以它只会查看models.*(Play 中 ORM 模型的默认包)。

    【讨论】:

    • 我在 Play 2.1.5 中使用 avaje-ebeanorm-agent-3.2.2.jar 进行了尝试,但除了在控制台中给出此消息外,它似乎没有做太多:transform> cls: play/db/ebean/Model msg: ...忽略字段_ebean_intercept
    • @Splaktar 请使用来自mirrors.ibiblio.org/maven2/org/avaje/ebean/2.7.3 的 jar ebean-2.7.3-agent.jar 这将有效(现在使用 play 2.2.6)
    • 升级到 Play 2.3.7,现在一切正常!
    【解决方案2】:

    您可以使用 Avaje Ebean Eclipse 插件:

    http://www.avaje.org/eclipseupdate/site.xml

    安装后,通过右键单击您的项目并选择启用 Ebean 增强来激活 Ebean 增强。

    【讨论】:

      【解决方案3】:

      当我尝试从扩展 Model 的类之一的声明中删除 public 修饰符时遇到此错误。

      我使用模型来制作“直通”表(与附加信息的多对多关系),因此受保护的访问是有意义的。也许还有另一种方法可以做到这一点,但播放 javadoc 非常稀疏。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 2013-03-26
        相关资源
        最近更新 更多