Play Framework 2.3.x (Java) 分布与 Ebean
Play Framework 2.3.x (Java) distribution with Ebean
我在本地机器上测试了我的 Play Framework 应用程序。一切正常。当我第一次在 localhost:9000
上启动我的 Play 应用程序时,它给我的错误是我的数据库 'default' 需要改进。这一切都是意料之中的,而且效果很好。
现在,当我使用命令 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$$anonfun$apply$mcV$sp.apply(Play.scala:91)
at play.api.Play$$anonfun$start$$anonfun$apply$mcV$sp.apply(Play.scala:91)
at scala.collection.immutable.List.foreach(List.scala:383)
at play.api.Play$$anonfun$start.apply$mcV$sp(Play.scala:91)
at play.api.Play$$anonfun$start.apply(Play.scala:91)
at play.api.Play$$anonfun$start.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.apply(NettyServer.scala:289)
at play.core.server.NettyServer$$anonfun$main.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.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.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
我在本地机器上测试了我的 Play Framework 应用程序。一切正常。当我第一次在 localhost:9000
上启动我的 Play 应用程序时,它给我的错误是我的数据库 'default' 需要改进。这一切都是意料之中的,而且效果很好。
现在,当我使用命令 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$$anonfun$apply$mcV$sp.apply(Play.scala:91)
at play.api.Play$$anonfun$start$$anonfun$apply$mcV$sp.apply(Play.scala:91)
at scala.collection.immutable.List.foreach(List.scala:383)
at play.api.Play$$anonfun$start.apply$mcV$sp(Play.scala:91)
at play.api.Play$$anonfun$start.apply(Play.scala:91)
at play.api.Play$$anonfun$start.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.apply(NettyServer.scala:289)
at play.core.server.NettyServer$$anonfun$main.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.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.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