当前位置: 首页 > 知识库问答 >
问题:

OSGi捆绑从类路径错误中获取资源

汪文光
2023-03-14

我正在编写hibernate dto映射osgi包(用于glassfish),这个包没有看到来自类路径的资源。

清单文件:

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

无法从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 out中可以看到:

bundle://376.0:1/hibernate.cfg.xml

搜索了捆绑类路径选项,但我的清单似乎没问题。需要一些特定的捆绑类路径属性来使我的捆绑包看到类路径资源,还是什么?感谢帮助!

共有1个答案

姜建德
2023-03-14

Hibernate在包含jar库的包中找不到其他包中的任何资源。Hibernate不知道OSGI清单文件,它会忽略它们,因此清单文件是否正确无关紧要。

请看我在这个帖子中的答案,我在这里给出的解决方案也应该适用于你的问题。

 类似资料:
  • 问题内容: 我正在寻找一种从给定的目录中获取所有资源名称的列表的方法,例如。 例如,给定一个路径目录x/y/z包含文件和子目录,应该返回一个包含下列字符串:, 。 它应同时适用于文件系统和jar中的资源。 我知道我可以用和 编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是什么?和堆栈都是可行的。 问题答案: 自定义扫描仪 实施自己的扫描仪。例如:

  • 我创建了一个依赖于SLF4J的捆绑包,因此使用Logback来实现OSGI。这一切都捆绑起来并安装正常,但是当我开始捆绑时,我得到以下异常: org.osgi.framework.BundleException: 無法解析 com.felix.test [20](R 20.0): missing requirements [com.felix.test [20](R 20.0)] osgi.wir

  • 您上载了一个APK或Android应用程序捆绑包,该捆绑包具有活动、活动别名、服务或广播接收器(带有意图过滤器),但没有“Android:exported”属性集。无法在Android 12或更高版本上安装此文件。见:开发者。Androidcom/about/versions/12/behavior-changes-12#导出 在play store console中上载捆绑包时在play sto

  • 问题内容: 我有一个Maven项目,并且在一种方法内想在我的资源文件夹中为目录创建路径。这样做是这样的: 生成的看起来像。 stacktrace如下: 在似乎是有效的。之前的部分指向生成的jar文件,之后的部分指向存档的根目录。在创建资源路径之前,我已经使用了此说明。为什么现在我要例外? 问题答案: 您需要先创建文件系统,然后才能访问zip之类的路径 这不会自动完成。 参见http://docs.

  • 我正在使用Eclipse Plugin-in-project开发一个Eclipse插件,它将在工具栏中添加一个菜单项。 请帮我解决这个问题!

  • 我也试着做 而我不断得到这个结果。