我有一个基于插件的Eclipse应用程序,其中将持久性数据放入X插件中,将休眠数据库服务放入Y插件中。

持久类在X中,而HibernateUtil,Dao,所有与休眠相关的jar和持久类的hbm.xml映射文件在Y中。

当我运行该应用程序时,我看到很多异常,例如:

java.lang.RuntimeException
javassist.CannotCompileException
java.lang.ClassNotFoundException
org.hibernate.HibernateException


它们都以“ java.lang.NoClassDefFoundError:org / hibernate / proxy / HibernateProxy”结尾

如果我在本地主机上使用数据库,则这些异常不会影响我的应用程序。
但是,当我尝试连接到远程数据库时,嵌套的HQL查询不起作用。我猜想这与代理有关。

有没有一种方法可以解决此问题,而无需将X和Y插件合并到单个插件中?

最佳答案

问题不大可能是由于eclipse插件的加载机制。有一个解决方法-伙伴加载。

在Hibernate插件的MANIFEST.MF文件中(需要伙伴加载),例如org.hibernate.eclipse,添加一行:

Eclipse-BuddyPolicy:registered


在您的插件项目或RCP项目的MANIFEST.MF文件中,添加以下行:

Eclipse-RegisterBuddy:org.hibernate.eclipse


这样可以解决问题。

这是有关此问题的博客文章:

http://hwellmann.blogspot.de/2008/11/hibernate-and-osgi-pragmatic-solution.html

10-02 09:57
查看更多