注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

获取 Java 程序运行的路径|获取当前 jar 包的路径  

2009-07-16 18:45:01|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最开始我是用能够这种方式来获取当前 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();
 }
 return realPath;
 }
}

两个方法,实现的方法不一样,效果是一样的。试一下去掉 xxxPath = file.getAbsolutePath(); 这句,看结果有何不同。

===================================================================================


  评论这张
 
阅读(8034)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016