获取Jar的路径可能比仅获取user.dir目录要复杂一些.我不记得具体的原因,但是user.dir并非在所有情况下都可靠地返回此路径.如果您绝对必须获取jar的路径,则需要做一点黑魔术,然后首先获取该类的protectionDomain.就像是:
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import javax.swing.JOptionPane;
public class MkDirForMe {
public static void main(String[] args) {
try {
String path = getProgramPath2();
String fileSeparator = System.getProperty("file.separator");
String newDir = path + fileSeparator + "newDir2" + fileSeparator;
JOptionPane.showMessageDialog(null, newDir);
File file = new File(newDir);
file.mkdir();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getProgramPath2() throws UnsupportedEncodingException {
URL url = MkDirForMe.class.getProtectionDomain().getCodeSource().getLocation();
String jarPath = URLDecoder.decode(url.getFile(), "UTF-8");
String parentPath = new File(jarPath).getParentFile().getPath();
return parentPath;
}
}
即使这样也不能保证有效,并且您不得不辞退自己这样的事实,即有时(例如出于安全原因)您将无法获得Jar的路径.