Ebean在创建JAR后找不到实体

时间:2012-07-10 14:29:13

标签: java entities ebean

问题是在Eclipse-IDE中,每个使用Ebean相关方法的测试都可以正常工作,但是当你编译一个jar-File来使用它时,例如在主页上,或在命令提示符下,我只能得到这个

Jul 10, 2012 4:25:48 PM com.avaje.ebeaninternal.server.util.ClassPathSearch find
Classes
Warnung: No Entities found in ClassPath using ClassPathReader [com.avaje.ebeanin
ternal.server.util.DefaultClassPathReader@6c08bae7] Classpath Searched[[file:/C:
/xampp/htdocs/webp3/jars/DPG.jar]]
Jul 10, 2012 4:25:48 PM com.avaje.ebeaninternal.server.core.BootupClassPathSearc
h search
Information: Classpath search hits in jars[] pkgs[]  searchTime[27]
Jul 10, 2012 4:25:48 PM com.avaje.ebeaninternal.server.lib.sql.DataSourcePool in
itialise
Information: DataSourcePool [mysql] autoCommit[false] transIsolation[READ_COMMIT
TED] min[1] max[25]
Jul 10, 2012 4:25:48 PM com.avaje.ebeaninternal.server.core.DefaultServerFactory
 setDatabasePlatform
Information: DatabasePlatform name:mysql platform:mysql
Jul 10, 2012 4:25:48 PM com.avaje.ebeaninternal.server.subclass.SubClassManager$
1 run
Information: SubClassFactory parent ClassLoader [sun.misc.Launcher$AppClassLoade
r]
Jul 10, 2012 4:25:48 PM com.avaje.ebeaninternal.server.deploy.BeanDescriptorMana
ger logStatus
Information: Entities enhanced[0] subclassed[0]
Exception in thread "main" javax.persistence.PersistenceException: com.dpu.entit
ies.Department is NOT an Entity Bean registered with this server?
        at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(Default
Server.java:1008)
        at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(Default
Server.java:965)
        at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.
java:1001)
        at com.avaje.ebean.Ebean.find(Ebean.java:1143)
        at com.dpu.data.Datagenerator.generateData(Datagenerator.java:26)
        at com.dpu.main.MainGenerator.main(MainGenerator.java:23)

我在google上尝试了许多“解决方案”,比如编辑Classpath,但是在日志中似乎一切都很好。

My JAR-Manifest contains this:
Manifest-Version: 1.0
Main-Class: com.dpu.main.MainGenerator
Class-Path: .

有人知道如何解决这个愚蠢的问题吗?我今天尝试了一切,这只是烦人的

5 个答案:

答案 0 :(得分:2)

除了user1537597的答案,您可以添加

# specify jars to search for entity beans  
ebean.search.jars=myJarFile.jar

到ebean.properties文件,如果你不使用程序化配置。

答案 1 :(得分:0)

同样在这里。 唯一的方法是提取jar并运行java主类。您还需要将ebean.properties文件放在项目的根目录中。

e.g:

jar xf project.jar

cp /my_project_root/ebean.properties project

cd project

java Project

答案 2 :(得分:0)

不是这取决于你需要在ebean.properties中指定在jar中查找实体的事实。我正在寻找如何从属性文件中做到这一点。现在我只找到了程序化配置。

config.addJar( “nameFile.jar”)

答案 3 :(得分:0)

我设法通过使用程序化配置并手动添加每个实体类来解决这个问题:

serverConfig.addClass(Entity.class);

ebean.search.jars=yourJar.jar相比,此方法的优点是,如果jar文件名更改,它仍然有效。

答案 4 :(得分:0)

您还可以将以下内容添加到ebean.properties

ebean.packages=com.packagename