【发布时间】:2015-04-13 18:14:02
【问题描述】:
我正在尝试实现一种在从 jar 中运行时获取当前类加载器的基本路径的方法。
我的意思是编程,我已经知道它应该是“jarPath+jarFile.jar!/”的形状
与文件系统的调用不同,getResource(".") 或 .getResource("/") 在 jar 中不起作用。
理想情况下,它应该是任何文件提供者的抽象解决方案,例如:
Path BASE_PATH = Paths.get(...getResource("").toURI())
它可以为 jars 和文件系统返回正确的根路径,这样我就可以使用我的资源的相对 url,而无需执行任何条件语句和 url 手动字符串解析/构建。
【问题讨论】:
-
jar 中没有“根路径”这样的东西,因为它不是文件系统的一部分。你到底想做什么?
-
如果你在寻找资源的相对路径,
SomeClass.class.getResource("foo.jpg")有什么问题,它从与SomeClass相同的包中加载 foo.jpg 文件?你想解决什么具体问题? -
读取不是问题,因为我在路径中指定了资源,但我也需要列出/写入基本目录,我不想做 getResource("com") .getPaarent() 气味最终容易出错
-
@user1352530 存储在 jar 文件中的资源没有“目录”。如果资源保存在 jar 中,那么您需要获取 jar 所在的目录并将其用作您的信息,而不是完全依赖 getResource() 返回的内容。
-
在通过路径和文件 NIO 类读取文件夹 input/resource.txt 时,我可以在两种情况下使用相同的代码(jar/fs)
标签: java maven jar resources classloader