如何在运行jar时从URL获取路径 - Java

时间:2015-08-13 13:57:19

标签: java netbeans jar classloader filepath

我希望我的代码能够直接从jar运行应用程序时获取文件路径(如字符串)。这是我的尝试

URL url = LispConnector.class.getResource("/Aima/aima/quicklisp/setup.lisp");
String path = url.getFile();
File f = new File(path);
path = f.getAbsolutePath();
path = path.replace("\\", "/");

虽然当我从netbeans运行应用程序时这很好,但是当我直接运行jar文件时,返回的absoulte路径不正确。返回的路径是

enter image description here

当我使用代码时

String path = url.toURI();
File = new File(path);
path = path.getAbsolutePath();

再次从netbeans运行时它工作正常,但显示错误" URI不是分层的"运行jar文件时出错。

我的问题是,如何直接从jar运行应用程序时获取文件的绝对路径。  我不想读取文件的内容,我只需要将absoulte路径作为字符串!

1 个答案:

答案 0 :(得分:0)

由于我的项目依赖于这些文件,我决定通过在build.xml中添加这些行来将文件夹复制到dist /文件夹

<target name="-post-compile">
<copy todir="${dist.dir}/aima">
<fileset dir="aima/"/>
</copy>
</target>

<target name="-post-compile"> <copy todir="${dist.dir}/aima"> <fileset dir="aima/"/> </copy> </target> 现在我不需要使用GetResource()或GetResourceAsStream()。