Jar无法访问资源文件夹

问题描述 投票:0回答:1

在我的项目中,我访问eclipse中/src/main/ressources/Mylib中的文件夹,它运行正常,没有任何问题,但是当我将项目导出到.jar文件时,它不起作用。

错误的代码行:

File fi = new File(Testp.class.getClassLoader().getResource("Mylib/").getFile());

它给出了这个错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.lang.NullPointerException
    at com.myproject.Testp.main(Testp.java:73)
    ... 5 more
java jar
1个回答
0
投票

所以您想将所有文件保存在类路径资源文件夹中?我找到了this example

private static File[] getResourceFolderFiles (String folder) {
    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    URL url = loader.getResource(folder);
    String path = url.getPath();
    return new File(path).listFiles();
}

我用System.out.println(Arrays.toString(getResourceFolderFiles("foldername/")));对其进行了测试,并且可以正常工作。但是您的文件夹必须在classpath上!

© www.soinside.com 2019 - 2024. All rights reserved.