gpt4 book ai didi

groovy - getResourceAsStream() 没有看到资源

转载 作者:行者123 更新时间:2023-12-03 03:10:20 25 4
gpt4 key购买 nike

我想从我的 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
}
}

关于groovy - getResourceAsStream() 没有看到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com