我在类似扩展的服务器端应用程序中使用Hibernate,并将我的二进制文件放到服务器应用程序的Extensions文件夹中。 问题是,如果我运行服务器,根文件夹是服务器应用程序的根文件夹,而不是二进制文件的根目录。因此,Hibernate搜索该文件夹中的配置文件,并尝试从该文件夹中查找类。我猜这与JVM有关,因为服务器启动它。配置文件不是问题,因为我可以在那里复制我的配置文件,但所有路径都无效。 因此,在我生成的映射文件中,我有一个类org.gmate.data.SomeClass.java,但它找不到它。
我的问题:有什么方法,解决方案或解决方法,我可以将Hibernate的根文件夹设置为Extension文件夹,所以它开始从那里获取类?
感谢所有的回复, gmate
答案 0 :(得分:0)
我终于找到了解决问题的方法。问题不是我想的假设的根文件夹,而是服务器使用的类加载器。就像在我的Extensions文件夹中一样,CustomClassLoader加载了我的类。它们没有出现在类路径中。当我将我的clsses移动到一个jar文件中,并将该jar文件添加到类路径中时,我设法使用了hibernate。将Extension文件夹添加到类路径导致使用SystemClassLoader加载这些类,但随后Custom ClassLoader的优点消失了。