如何获取另一个jar中的资源

2023-12-07

我有一个嵌入在捆绑包中的 jar,需要获取与其打包的资源,如下所示:

MyBundle
  -\ src
  -\lib
    -\MyEmbeddedJar
      -\src
        -\SomeClass
      -\someResource.xml

我正在尝试从“SomeClass”访问“someResource.xml”,如下所示:

SomeClass.class.getResource( "someResource.xml" ); 

但我没有运气。我已经尝试了附加 CWD 的几种变体(例如:“./someResource.xml”),但我就是无法加载此资源。

我知道“正确”的方法是使用 Activator 将钩子返回到正确的类加载器,但是嵌入式 jar 可以在其他项目中使用,所以我讨厌必须向其中添加 OSGi 特定代码才能获得它与 OSGi 良好配合。

还有其他方法可以在 OSGi 中加载资源吗?


我假设SomeClass位于嵌入的 jar 内(例如,somejar.jar), and someResource.xml是在外罐子里,在lib目录。

在这种情况下,无法在非 OSGi 上下文中实现这一点。让我们单独看看这两种情况。

In OSGi

Your someResource.xml应该可以使用常规(非 OSGi 特定)资源加载机制来访问,provided它可以从Bundle-ClassPath。例如,如果您有以下清单标头,

Bundle-ClassPath: ., somejar.jar

您将能够使用以下方式获取您的资源"lib/someResource.xml"。 注意类路径上的点:这意味着您可以从 jar 的根访问类和资源。如果你忘记了这一点,你将只能访问里面的课程和资源somejar.jar.

不使用 OSGi

如果您不使用 OSGi,据我所知,没有(相当简单的)方法可以获取内部 jar 内的类和资源。

您的选择

根据您希望捆绑包的外观,您现在有两种选择。

  1. 真的有必要吗SomeClass是在嵌入式罐子里吗?如果是这样,你就不知所措了,你的 jar 只能使用 OSGi 工作。
  2. 如果您可以选择“解压”somejar.jar到你的罐子里,你就颠覆了问题,并且你的罐子可以在两种情况下工作。

就我个人而言,我会选择选项 2:除非您的资源在“合并”罐子时可能会相互覆盖,否则在您的包中包含一些稍微混乱的资源是没有问题的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取另一个jar中的资源 的相关文章

  • 使用 GWT CellTableBuilder 构建树表

    Is it possible to build a tree table like this http www sencha com examples ExamplePlace basictreegrid with the new Cell
  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • 如何通过 Inno Setup for NetBeans 使用自定义 .iss 文件

    我将 Inno Setup 5 与 NetBeans 8 一起使用 并且我已经能够创建一个安装程序来安装该应用程序C users username local appname 但是我希望将其安装在C Programfiles 我如何在 Ne
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi

随机推荐

  • 有人可以解释一下这段简短的 C++ 代码吗,我无法理解它

    include
  • 第 2 部分:如何在不实际旋转的情况下获取基于分区的查询的总和

    因此 由于我没有最新版本的 Postgresql 我有 Postgresql 9 3 所以我不可能想出一个类似于计算特定字段的总值的数据透视函数的函数 您可以单击下面的链接来使用我创建的问题作为参考 它们在代码中类似 但在要求方面有所不同
  • 当鼠标离开屏幕时如何停止移动

    我希望有人可以帮助我解决一个小问题 目前 我在主摄像头上附加了一个输入管理器 允许用户通过将鼠标移动到窗口边缘来平移地图 但我遇到了一个小问题 我尝试自行修复但无济于事 如果鼠标移出窗口 平移仍然会发生 当我调试或使用其他应用程序时 我觉得
  • 如何使轴在网格线之间打勾

    在下面的简单示例中 如何使 x 轴刻度值出现在网格之间 import numpy as np import matplotlib pyplot as plt np random seed 1 x range 10 y np random r
  • 发布请求后收到 400 错误请求

    当我发送以下 http post 请求时 POST query fcgi HTTP 1 1 Content Type application x www form urlencoded Content Length 63 form stat
  • 使用 Google Sheet 导入 XML 并每分钟自动刷新

    我有下面的脚本 它在名为 价格 的 google 表中导入一些 XML 数据 一切工作正常 除了我设置了一个时间驱动的触发器每分钟运行一次 但数据不会更新 触发器似乎工作正常 因为我可以看到最后一次运行时间每分钟更新一次 调用 XML 数据
  • 为什么 gcc/clang 处理代码的方式略有不同? (给出的例子)

    所以我在摆弄 C 代码时 我注意到 gcc 和 clang 处理代码的方式 如果我使用可变大小在文件范围中声明一个数组 clang 编译没有问题 但 gcc 会抛出错误 我的猜测是 这与 gcc clang 默认情况下启用 未启用哪些编译器
  • 使用 jQuery 更新 css

    我正在尝试使用 jQuery 更新导航栏的 CSS 通常将 css 定义为 navbar static top navbar nav gt active gt a background color black 我该如何使用类选择器 无需单独
  • 授予远程用户(非管理员)使用 WMI 和 C# 枚举命名空间 cimv2 中 Win32_Service 中的服务的能力

    我正在创建一个看门狗服务 它将监视各种远程服务器 都在同一域中 上的其他服务 我用来连接远程服务器的用户不是管理员 当我尝试枚举 Win32 Service 类中的服务时 出现访问被拒绝错误 我已向用户授予 WMI 控件中 Root CIM
  • 推送到分支时未触发 Github 操作

    My build and test yml文件输入 github workflows如下 name CI on push branches main name of my branch pull request branches main
  • Java接口扩展问题

    我必须实现一个 RMI 服务器 它将作为另外两个 RMI 服务的前端 因此 我决定要做的一个合乎逻辑的事情是让该接口实现其他两个服务的接口 public interface FrontEndServer extends Remote Boo
  • Inno Setup 中不同语言的不同许可证文件

    我在 Inno Setup 中创建了多语言安装文件 如何针对不同语言使用不同的许可证文件 例如 英语语言 gt 英语许可证俄语 gt 俄语许可证 如果您只想要每种语言的自定义许可证 您可以使用指定LicenceFile上的参数 Langua
  • 为什么 SkiaSharp Touch SKTouchAction.Moved 事件不起作用?

    Summary ActionType 为 的情况下永远不会引发 Touch 事件SKTouchAction Moved but SKTouchAction Pressed被提出 为什么 Moved事件永远不会被引发 Detail 我正在尝试
  • 在java中找不到要求创建类的符号

    我有一个类定义如下 public class Myclass public int myvariable 100 if myvariable gt 0 为什么我前面出现错误if condition说明cannot find symbol s
  • 反应寄存器错误不显示

    我正在链接 Web 应用程序的正面和背面 并且在注册部分中 我无法向 UI 显示验证和服务器错误消息 当执行错误注册时 我收到 400 和 401 状态我想显示的消息位于 Axioserror gt response gt data gt
  • 尝试构建正则表达式来检查模式

    a 以数字开头和结尾b 连字符应以数字开头和结尾c 逗号应以数字开头和结尾d 数字范围应为 1 31 编辑 在正则表达式中需要这条规则 谢谢 Ed Heal e 如果数字以连字符 开头 则不能以逗号以外的任何其他字符结尾 并且遵循上面列出的
  • 是否可以在堆栈上创建类的实例?

    我知道在 C 中你可以在堆栈上创建类的实例 例如 MyClass mc MyClass 8 2 或者像在堆上 MyClass mc new MyClass 8 2 你能在 C 中做同样的事情吗 我在 C 中创建类的唯一方法是newing i
  • 使用 R 从 API 中提取数据

    我可以访问 azure 中的一些遥测数据 特别是使用移动应用程序的客户的所有 API 调用 我已经使用 R 中的 httr 包来请求 3 分钟内的数据 并像这样评估响应 显然有我自己的应用程序 ID 和密钥 下面我没有包含 install
  • MySQL INNER JOIN 仅从第二个表中选择一行

    我有一个users表和一个payments表中 对于每个有付款的用户 在表中可能有多个关联的付款payments桌子 我想选择所有有付款的用户 但只选择他们最新的付款 我正在尝试这个 SQL 但我以前从未尝试过嵌套 SQL 语句 所以我想知
  • 如何获取另一个jar中的资源

    我有一个嵌入在捆绑包中的 jar 需要获取与其打包的资源 如下所示 MyBundle src lib MyEmbeddedJar src SomeClass someResource xml 我正在尝试从 SomeClass 访问 some