Aru*_*n V 3 java resources path classloader getresource
在我的一个JUnit测试中,我试图加载目录中包含的所有文件.我曾经.getClassLoader().getResource("otherresources")找到目录.然后我做了一个新的java.io.File.然后我用来listFiles()获取所有子文件,然后.getClassLoader().getResource()再次使用来加载每个文件.
URL url = FileLoadTest.class.getClassLoader().getResource("otherresources");
File directory = new File(url.getPath());
File[] files = directory.listFiles();
Run Code Online (Sandbox Code Playgroud)
基本上,我希望能够加载目录中的所有文件,而不知道它们究竟是什么.
我可以在Eclipse中正确运行测试.当我使用Maven(mvn install)构建项目或使用surefire(mvn -Dtest=FileTest test)自行运行测试用例时,测试用例失败了NullPointerException.我认为这个问题与File api在资源部署到的JAR文件中没有按预期工作有关.
有关如何解决此问题的任何提示?
正确的是,File API只能从文件系统读取,而不能在JAR文件中读取.
不幸的是,没有一种很好的方法可以完全按照你要做的去做,而不使用一些额外的库来利用一些黑客来试图完成这一点.类路径上的资源并不是可枚举的,因为无法保证它们的加载位置(可能来自磁盘,JAR文件,HTTP,数据库或其他外来资源 - 包括可用文件枚举的资源)不可行).最好的方法是包含一个"索引"或其他具有众所周知名称的类似文件,可以引用它来查找您感兴趣的其他资源.
如果您知道JAR文件的路径,那么其中一个"黑客"就是,您可以使用JarFile(甚至只是ZipFile)从它们中读取.
| 归档时间: |
|
| 查看次数: |
5863 次 |
| 最近记录: |