如何在Java中获取已执行的.jar文件的路径?
我尝试使用System.getProperty("user.dir");
,但这只给了我当前的工作目录,这是错误的,我需要目录的路径,.jar文件直接位于,而不是“pwd”。 / p>
答案 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文件的名称,并且它是否在类路径中,您可以在那里找到它的路径,例如。带一点正则表达式。