1
我正在编写hibernate dto-mapping osgi包(对于glassfish),并且此包没有从类路径中看到资源。OSGi包从类路径错误中获取资源
清单文件:从sqljdbc4.jar
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Model
Bundle-SymbolicName: com.test.spm.model
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.test.spm.model.Activator
Bundle-Vendor: TEST
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Require-Bundle: org.hibernate.core;bundle-version="4.1.7"
Export-Package: com.test.spm.model,
com.test.spm.model.dto,
com.test.spm.model.dto.base,
com.test.spm.model.util
Bundle-ClassPath: .,
lib/sqljdbc4.jar
广东话访问文件,错误:
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.microsoft.sqlserver.jdbc.SQLServerDriver
但这图书馆存在于出口的jar文件。
此外,我不能访问Hibernate配置文件,并通过类路径映射文件(类未找到和资源未找到例外)。但接下来的代码工作:
sessionFactory = new Configuration().configure(HibernateUtil.class.getClassLoader().getResource("hibernate.cfg.xml"))
.addURL(HibernateUtil.class.getClassLoader().getResource("mapping/Project.hmb.xml"))
.buildSessionFactory();
我试图调用
System.out.println(HibernateUtil.class.getClassLoader().getResource("hibernate.cfg.xml"));
,看看这个在sys出:对于捆绑类路径选项
bundle://376.0:1/hibernate.cfg.xml
GOOGLE了,但我的表现似乎确定。 需要我一些特定的包类路径属性,使我的包看到类路径资源,或什么?感谢帮助!
你是完全正确的,我添加了Hibernate库到这个包,所有的作品都是正确的!但是,你能解释我的下一件事:我的最后一个项目之一是RCP项目(OSGi(Equinox)捆绑插件系统),并且我分开了dto-mapping插件的hibernate libs插件,并且所有工作都很好! RCP捆绑系统和我的问题有什么不同? – Peter
我无法解释,因为我不知道RCP编程,我不知道你的项目是如何安装的。主要的问题是,在hibernate.cfg.xml中指定的资源路径与被执行的bundle的主目录(即hibernate库所在的bundle)相关,并且没有标准的方法Hibernate将路径指定到另一个包中。 – Johanna