如何从Java Jar文件中获取通往资源/文件的路径
题
我正在尝试获取通往其位于Java Jar之外的文件的路径,但我不想使用绝对路径。 EXAMPEL:假设JAR位于〜/lib/myjar.jar中,该文件位于同一文件夹中。我尝试的是这样的事情,但是失败了:
File myfile = new File(this.getClass().getResource("../../../").toURI());
注意:我的软件包是com.contro.gui,这就是为什么我拥有“ ../../../”,以便加入“ root”
我不确定如何访问该文件。有任何建议吗?那我要访问的文件是否在其他文件夹中,例如〜/ res/?
解决方案
如果文件与jar的目录处于同一目录,我认为这会起作用(感觉很骇人,但是...):
URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file
(尚未对此进行测试,但看起来很可行。当然,只能与基于文件的罐子一起使用)。
如果文件位于某个随机位置,我认为您需要通过参数或检查“已知”位置 user.home
. 。 (或者,您总是可以将文件放入罐子中 getResource()
.)
其他提示
不做
File FileName = new File(".");
String Directory = FileName.getCanonicalPath();
如果在此类似“ nameofjar nameOfforder etc”的jar中,那将使您在文件或jar中获得类的父目录,请记住设置该目录。
不隶属于 StackOverflow