获取Java程序运行路径

最开始我是用这种方式来获取当前 jar 包的文件的:

private static String LOCATION = [MainClass].class.getProtectionDomain()
        .getCodeSource().getLocation().getFile();


但是如果路径中包含中文,就会变成带“%xx%xx”格式的字符串。所以应该这样写才对:

private static String LOCATION;

static {
    try {
        LOCATION = URLDecoder.decode([MainClass].class.getProtectionDomain()
            .getCodeSource().getLocation().getFile(), “UTF-8″);
    } catch (UnsupportedEncodingException e) {
        LOCATION = “”;
    }
}




对于Java程序,无论是未打包Class的还是打包的JAR都有效。

public class MyPath {
 public static String getProjectPath() {
 java.net.URL url = MyPath.class.getProtectionDomain().getCodeSource().getLocation();
 String filePath = null;
 try {
 filePath = java.net.URLDecoder.decode(url.getPath(), "utf-8");
 } catch (Exception e) {
 e.printStackTrace();
 }
 if (filePath.endsWith(".jar"))
 filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);
 java.io.File file = new java.io.File(filePath);
 filePath = file.getAbsolutePath();
 return filePath;
 }

 public static String getRealPath() {
 String realPath = MyPath.class.getClassLoader().getResource("").getFile();
 java.io.File file = new java.io.File(realPath);
 realPath = file.getAbsolutePath();
 try {
 realPath = java.net.URLDecoder.decode(realPath, "utf-8");
 } catch (Exception e) {
 e.printStackTrace();
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值