如何获取执行.jar文件的路径?

时间:2010-03-01 13:23:18

标签: java jar

如何在Java中获取已执行的.jar文件的路径?

我尝试使用System.getProperty("user.dir");,但这只给了我当前的工作目录,这是错误的,我需要目录的路径,.jar文件直接位于,而不是“pwd”。 / p>

3 个答案:

答案 0 :(得分:2)

你能说明你需要路径的原因吗?
如果你需要从jar文件中访问一些属性,你应该看一下ClassLoader.getSystemClassLoader();
不要忘记你的课程没有必要存放在一个jar文件中。


// if your config.ini file is in the com package.
URL url = getClass().getClassLoader().getResource("com/config.ini");
System.out.println("URL=" + url);

InputStream is = getClass().getClassLoader().getResourceAsStream("com/config.ini");
try {
    if (is != null) {
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
    else {
        System.out.println("resource not found.");
    }
}
catch (IOException e) {
    e.printStackTrace();
}

问候。

答案 1 :(得分:0)

取自Java-Forumns

        public static String getPathToJarfileDir(Object classToUse) {
        String url = classToUse.getClass().getResource("/" + classToUse.getClass().getName().replaceAll("\\.", "/") + ".class").toString();
        url = url.substring(4).replaceFirst("/[^/]+\\.jar!.*$", "/");
        try {
            File dir = new File(new URL(url).toURI());
            url = dir.getAbsolutePath();
        } catch (MalformedURLException mue) {
            url = null;
        } catch (URISyntaxException ue) {
            url = null;
        }
        return url;
      }

答案 2 :(得分:0)

也许java.class.path属性?

如果您知道jar文件的名称,并且它是否在类路径中,您可以在那里找到它的路径,例如。带一点正则表达式。