getResourceAsStream() 没有看到资源

2023-12-11

我想从我的 jar 文件中解压资源。 jar的结构如下:

my.jar
    META-INF
    resources
        my.exe
        my.dll
    my
        namespace
            UnpackResourceFromThisClass.class

我想从 jar 文件中解压 my.exe 和 my.dll。我尝试使用以下代码解压这些文件:

try {
    InputStream is = getClass().getResourceAsStream("/resources/my.exe")
    OutputStream os = new FileOutputStream(new File(destDir))
    Files.copy(is, os)
    os.close()
    is.close()
}
catch (NullPointerException e) {
    e.printStackTrace();
}
catch (FileNotFoundException e) {
    e.printStackTrace();
}
catch (SecurityException e) {
    e.printStackTrace();
}

但它不起作用。有任何想法吗?结果我得到这个错误:

java.lang.NullPointerException
    at java.nio.file.Files.provider(Files.java:65)
    at java.nio.file.Files.newInputStream(Files.java:106)
    at java.nio.file.Files.copy(Files.java:2884)
    at java_nio_file_Files$copy.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at pl.ydp.gradle.Is2k8Task.getResources(Is2k8Task.groovy:84)
    at pl.ydp.gradle.Is2k8Task.build(Is2k8Task.groovy:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877)
    at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:216)

这是将在 gradle 自定义任务中使用的常规代码。


您似乎正在编写 Java...不确定这是否可以解决您的问题,但上面的内容可以用 Groovy 编写为:

this.getClass().getResource( '/resources/my.exe' ).withInputStream { ris ->
  new File( destDir ).withOutputStream { fos ->
    fos << ris
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getResourceAsStream() 没有看到资源 的相关文章

  • 从 Jenkins Pipeline 捕获 shell 脚本输出

    我正在尝试提取 git 分支并在 Jenkinsfile 中提交信息 如下所示 def commit sh returnStdout true script git rev parse HEAD trim def branch sh ret
  • Spotbugs 在 gradle 项目中排除过滤器

    我是 gradle 新手 正在尝试配置 Spotbugs 我已将该插件添加到 build gradle 中 并且出现了 Spotbugs 问题 不过 我想排除 Findbugs EI EXPOSE REP 和 EI EXPOSE REP2
  • Gradle 编译JpaModelgenJava 失败

    我有一个带有 Spring Data JPA 和 Hibernate 的 Spring Boot v1 4 2 应用程序 如果我没记错的话 是 5 0 11 Final 我添加了 jpadmodelgen plugin 来为我生成元模型类
  • Gradle 从服务器收到状态代码 403:禁止

    由于这个错误 我无法构建我的 android 项目 Gradle 无法获取https www jitpack io com github Raizlabs DBFlow dbflow 3 1 1 dbflow 3 1 1 pom https
  • gradlew:appengineEnhance 失败

    我正在使用 Java 创建移动后端Google App Engine with Android Studio 为了启动公开我的 API 的本地服务器 我使用gradlew module name appengineRun 然而 当我去htt
  • Gradle - 我可以在项目依赖项中包含任务的输出吗

    我有一个任务 从这些源生成java源和一组jar 例如 项目a 我想将这些 jar 导出到依赖项目 例如 项目b 所以这就是我现在所拥有的大致内容 a gradle configurations generatedJars task gen
  • 构建配置变量。错误:找不到符号

    在项目中我有几个flavors 一些buildTypes和几个folders用于组合 构建组合 文件夹结构 在每个文件夹中我都有自定义Application class AndroidManifest注册这个Application clas
  • 具有共享日志配置的 Gradle 多项目

    是否有一种标准方法可以在 gradle 项目布局中的所有子项目之间共享日志记录配置 例如 log4j 或 logback 我现在做的就是复制一份logback xml or log4j properties in src main reso
  • 尝试在 Android 上使用 FFMPEG。编译但是还是不行

    首先 我尝试使用 ffmpeg 将图像数组编译成 Android 上的视频 我已经遵循了各种在线教程 并且已经能够编译 Android 的库 但仍然需要项目运行 我现在使用的存储库可以在这里找到 https github com Batte
  • 在 Eclipse 中编译 Groovy 文件

    我的 java web 项目包含一些 Groovy 代码 但 Eclipse 无法识别 Groovy 文件 也无法从中生成任何类 我已经在 Eclipse 中安装了 Groovy 插件 在我的 Windows 机器中安装 Groovy 并设
  • 与字符串比较在 Jenkins 管道中不起作用

    知道为什么IF ELSE下面的作品 def checkPrValidity wordCountStr sh returnStdout true script git diff ignore space at eol target branc
  • Android Studio/Gradle 测试文件夹命名约定

    我看过很多在 Android Studio Gradle 项目上进行测试的教程和帮助项目 我很好奇测试文件夹的命名约定 我见过两个类似的命名 test and androidTest 有什么真正的区别吗 IDE Gradle 框架是否以不同
  • 无法使用gradle将overview.html放入javadoc中

    使用最新的 gradle 我试图让标准的overview html 出现在我的项目的javadoc 中 我尝试了几种不同的配置方法 但没有成功 这是最新的 javadoc ext overview projectDir src main j
  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • 让两种口味使用相同的sourceSet

    我有两种风格 demo 和 full 每种风格都有自己的源集在 src demo 和 src full 中 这很好用 我现在想做第三种使用这些源集之一的风格 我该怎么做呢 我尝试过类似的东西 productFlavors full appl
  • ANTLR4 的最小示例 Gradle 项目(带有 antlr 插件)是什么?

    我创建了新的 Gradle 项目 添加了 apply plugin antlr and dependencies antlr org antlr antlr4 4 5 3 to build gradle Created src main a
  • 如何在 Gradle 中创建路径 jar

    在 Windows 环境中运行 groovyc 时 在我的情况下 由于类路径的长度 我遇到了问题 我想通过创建一个路径 jar 来解决这个问题 然后将该 jar 放在 cp 上 如何创建一个包含在 gradle 中自动指定的所有类路径条目的
  • 如何确定 kotlin-multiplatform 项目中的构建类型

    我正在开发一个多平台项目 包括 iOS 和 JVM 我不直接针对 Android 根据构建类型 调试或发布 我想配置日志记录级别 即仅打印发布中的错误 由于没有一个BuildConfig课程可用 我怎样才能知道commonMain构建类型
  • Gradle 守护进程在“完成作业”步骤中被终止

    我有一个 构建 管道 它在我的 java 代码上运行 gradlew build 然后将 jar 作为工件导出 它目前正在自托管代理上运行 因为我希望这将有助于加快编译速度 我注意到 在每次运行开始时 它都会说它正在启动一个新的守护进程 因

随机推荐

  • 如何使CardView具有可点击和可检查的效果,以及如何使其成为深色主题?

    背景 在引入CardView之前 我在上面做了一些选择器my app模仿卡片 并让用户选择应用程序使用的主题 有些人更喜欢深色主题 问题 我想让它看起来和工作起来更原生 所以我尝试使用 CardView 遗憾的是 我无法理解如何设置 Car
  • Math.cos 不准确

    alert Math cos Math PI 2 为什么结果不精确为零 这是不准确的 还是一些实施错误 Math PI 2是实际值的近似值pi 2 取该近似值的精确余弦值不会产生零 您获得的值是该精确值的近似值 最高可达基础浮点数据类型的精
  • 恢复已删除的 Eclipse 项目

    我想在 eclipse 中创建一个新的 git 存储库 当我删除旧的存储库时 不幸的是整个项目已从工作区中删除了 有什么办法可以恢复项目吗 我将不胜感激你的回答 如果您的工作有另一个存储库 例如中央 git 服务器 另一个开发人员 另一台计
  • 在应用程序之间共享文件

    我可以与另一个应用程序共享一个应用程序相关的数据吗 假设我在 apk2 的 resources raw 文件夹中有一个音乐文件 我可以在 apk1 1 中使用相同的文件吗 thx 如果您的应用程序使用相同的证书进行签名并具有相同的andro
  • 为什么 Vue 无法解析本地主机的图像?

    作为 vue js 的后端 我使用 laravel 端口 8000 在我的数据库中 我有用户及其个人资料照片的名称 this user photo 所以 我想展示这张照片 img alt Profile Photo 当我去http loca
  • MySQL:事务与锁定表

    我对事务与锁定表有点困惑 以确保数据库完整性并确保 SELECT 和 UPDATE 保持同步并且没有其他连接干扰它 我需要 SELECT FROM table WHERE LIMIT 1 if condition passes Update
  • Objective-C:`@synthesize fooBar;` 与`@synthesize fooBar=_fooBar;` [重复]

    这个问题在这里已经有答案了 可能的重复 带下划线前缀的综合属性和变量 这是什么意思 我在代码中见过这两个 有什么不同 synthesize fooBar synthesize fooBar fooBar synthesize fooBar
  • 处理IE浏览器中的ctrl+按键事件

    I m using hotkeys Ctrl key in my flex application getting problem when my app is running in IE when I press Ctrl D im ge
  • 使用 Doctrine 构建通用的 OO ACL

    我正在寻求设计一个以学说为基础的 ACL 系统供我自己使用 尽管我在一些最初的设计考虑因素上遇到了困难 现在我正在考虑根据类和唯一标识符来制作它 并将它们存储在表中 如下所示 Table ACL ResourceClass Resource
  • 子进程打开('source venv/bin/activate'),没有这样的文件?

    我想进入 python 文件中的虚拟环境 但它没有引发这样的文件 import subprocess subprocess Popen source Users XX Desktop mio worker venv bin activate
  • 如何绘制双对数 R 图的线性回归?

    我有以下数据 someFactor 500 x c 1 250 y x 25 someFactor 我以双对数图显示 plot x y log xy 现在我使用线性模型 找出 数据的斜率 model lm log y log x model
  • 如何以编程方式从 Android 删除 SQLite 数据库

    我想从以下位置删除数据库文件Android file system以编程方式 我可以启动 shell 脚本吗adb它又在 Android 空间中运行 shell 脚本来删除数据库 我可以在短时间内完成这件事吗JUnit测试用例 带有syst
  • 哈希表和Trie(前缀树)如何选择?

    因此 如果我必须在哈希表或前缀树之间进行选择 那么导致我选择其中之一的区别因素是什么 从我自己天真的角度来看 使用 trie 似乎有一些额外的开销 因为它不是存储为数组 但就运行时间而言 假设最长的键是最长的英语单词 它本质上可以是 O 1
  • 使用 LightOpenID 登录/注销用户状态

    我正在尝试在我的网站上使用 LightOpenId 来登录 注销用户 这工作正常 但我的问题是 如何跟踪用户登录 注销状态并采取相应的操作 我希望用户仅在登录时访问我的网站功能 并在用户注销时重定向到登录页面 提前致谢 你的问题实际上与Op
  • 创建自定义键盘控件 [Elm]

    我正在尝试为 4 人游戏创建自定义键盘控件 现在 密钥是这样预先确定的 type Orient x Int y Int type GameInput space Bool delta Time so1 Orient so2 Orient s
  • 在 bash 中获取某些列

    假设我有一个数组 其中数组中的每个元素都采用以下格式 someText x1 y1 z1 x2 y2 z2 x3 y2 z3 KEY 构建新数组的方法是什么 其中新数组中的元素只是前一个数组的第一列和最后一列 你可以做这样的事情 其中OLD
  • CloudFormation - 从 Lambda 代码访问参数

    我有一个CloudFormation模板看起来像这样 AWSTemplateFormatVersion 2010 09 09 Description This template will deploy stuff Parameters my
  • 如何使用文件权限保护 Laravel 中的 .env 文件?

    我的 env 文件包含所有凭据 可通过 URL 访问 我发现了一些问题 比如如何在 laravel 5 4 中保护 env 文件 上面说要使用htaccess以防止用户访问该文件 但我更喜欢使用文件权限 所以我将权限更改为0111它只能执行
  • select语句中列的顺序会影响查询速度吗?

    例如 我有一个这样的数据库 id fname lname sex age tel cell address If I do select cell fname address sex而不是做select fname sex cell add
  • getResourceAsStream() 没有看到资源

    我想从我的 jar 文件中解压资源 jar的结构如下 my jar META INF resources my exe my dll my namespace UnpackResourceFromThisClass class 我想从 ja