java - 使用 Ebean 进行 Play Framework 2.3.x (Java) 分发

标签 java web-deployment playframework-2.3 ebean

我在本地计算机上测试了 Play Framework 应用程序。一切正常。当我第一次在 localhost:9000 上启动 Play 应用程序时,它给出了我的数据库“默认”需要改进的错误。这一切都在意料之中,并且很有魅力。

Cropped print screen of the local error

现在,当我使用命令 activator clean dist 渲染发行版时,会输出 target/universal/my-project-name-version-number-SNAPSHOT.zip 。然后我将该文件上传到我的分发服务器并在那里解压缩。

现在我来回答我的问题。存档已解压缩,我导航到 /bin。然后我运行命令 ./my-project-name 输出以下内容:

Play server process ID is 1234
[info] play - database [default] connected at jdbc:h2:mem:my-project-name
Oops, cannot start the server.
Configuration error: Configuration error[Cannot register class [models.ModelName] in Ebean server]
    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94)
    at play.api.Configuration.reportError(Configuration.scala:743)
    at play.Configuration.reportError(Configuration.java:310)
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:81)
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
    at scala.collection.immutable.List.foreach(List.scala:383)
    at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
    at play.api.Play$$anonfun$start$1.apply(Play.scala:91)
    at play.api.Play$$anonfun$start$1.apply(Play.scala:91)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    at play.api.Play$.start(Play.scala:90)
    at play.core.StaticApplication.<init>(ApplicationProvider.scala:55)
    at play.core.server.NettyServer$.createServer(NettyServer.scala:253)
    at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:289)
    at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:284)
    at scala.Option.map(Option.scala:145)
    at play.core.server.NettyServer$.main(NettyServer.scala:284)
    at play.core.server.NettyServer.main(NettyServer.scala)
Caused by: java.lang.UnsupportedClassVersionError: models/ModelName : Unsupportedmajor.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:274)
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:79)
    ... 15 more

我的 models.ModelName 如下所示:

@Entity
public class ModelName extends Model {

    private static final long serialVersionUID = 3937829334149968337L;
    public static final Model.Finder<Long, ModelName> find = new Finder<Long, ModelName>(
        Long.class, ModelName.class
    );

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    protected Long id;

    @Constraints.Required
    protected String name;

    @Constraints.Required
    @Lob
    protected byte[] data;


    /** Getters/setters */
    public Long getId() {
        return this.id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public byte[] getData() {
        return this.data;
    }

    public void setData(byte[] data) {
        this.data = data;
    }
}

有谁知道这是为什么以及如何解决它?

编辑

将选项 applyEvolutions.default=true 放入我的 application.conf 文件中不会产生任何影响。

解决

命令./activator -DapplyEvolutions=true有效。该错误是由我使用的平台引起的:Windows。在 Linux 平台上,这就像一个魅力。谢谢!

最佳答案

在启动应用程序期间使用 applyEvolutions 作为参数(最好编写 shell 脚本),例如:

 ./my-project-name -DapplyEvolutions.default=true

关于java - 使用 Ebean 进行 Play Framework 2.3.x (Java) 分发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30397947/

相关文章:

javascript - 当使用来自另一个函数的参数单击按钮时,我想将用户重定向到网页?

java - Eclipse Jboss 工具 - 部署父子项目

scala - Intellij中如何运行指定的子模块播放应用

java - Sbt/Activator 未在 Play2 java 项目中运行所有测试

java - Android Webview,仅在链接上启用设置长按?

java - 正则表达式模式灾难性回溯

asp.net - Azure 套件与简单 ASP.Net Web 表单应用程序

scala - 如何使用 Scala/Play 2.3 安排复杂的任务?

java - JList 未使用自定义 ListModel 进行更新

java - JAX-RS:提供 "default"子资源定位器