1. 下面专门封装了一个类来处理:
  2. import  java.io.File;
  3. /**
  4. * 获取打包后jar的路径信息
  5. * @author Administrator
  6. *  2011-01-16 13:53:12
  7. */
  8. public   class  JarTool {
  9. //获取jar绝对路径
  10. public   static  String getJarPath(){
  11. File file = getFile();
  12. if (file== null ) return   null ;
  13. return  file.getAbsolutePath();
  14. }
  15. //获取jar目录
  16. public   static  String getJarDir() {
  17. File file = getFile();
  18. if (file== null ) return   null ;
  19. return  getFile().getParent();
  20. }
  21. //获取jar包名
  22. public   static  String getJarName() {
  23. File file = getFile();
  24. if (file== null ) return   null ;
  25. return  getFile().getName();
  26. }
  27. private   static  File getFile() {
  28. //关键是这行...
  29. String path = JarTool.class .getProtectionDomain().getCodeSource()
  30. .getLocation().getFile();
  31. try {
  32. path = java.net.URLDecoder.decode(path, "UTF-8" ); //转换处理中文及空格
  33. }catch  (java.io.UnsupportedEncodingException e){
  34. return   null ;
  35. }
  36. return   new  File(path);
  37. }
  38. }
  39. 必须要打包成jar后才能正确获取相关路径信息,下面写了个测试类:
  40. Java代码  收藏代码
  41. import  javax.swing.JFrame;
  42. import  javax.swing.JTextArea;
  43. public   class  TestFrame  extends  JFrame{
  44. public  TestFrame() {
  45. JTextArea ta = new  JTextArea();
  46. ta.setEditable(false );
  47. ta.append("name: " +JarTool.getJarName()+ "/n" );
  48. ta.append("dir: " +JarTool.getJarDir()+ "/n" );
  49. ta.append("path: " +JarTool.getJarPath()+ "/n" );
  50. add(ta);
  51. pack();
  52. setTitle("动态获取Jar路径信息" );
  53. setVisible(true );
  54. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  55. }
  56. public   static   void  main(String[] args) {
  57. new  TestFrame();
  58. }
  59. }
  60. 将上面一起打包成path.jar后放到桌面运行结果:
  61. 无论path.jar放到任何地方都能得到正确的路径信息 (*^__^*) 嘻嘻……
  62. 主要靠下面两行代码实现
  63. class.getProtectionDomain().getCodeSource().getLocation().getFile(); 这行作用是获取当前的绝对路径信息
  64. java.net.URLDecoder.decode(path, "UTF-8"); 此行是将path中的空格和中文“乱码”转换正确回显
  65. 对此可以为自己做的软件“注册”随系统开机启动了...

动态获取jar文件的路径的更多相关文章

  1. IE8下服务端获取客户端文件的路径为C:/fakePath问题的解决方案

    上一篇文章上提到,IE8下服务端获取客户端文件的路径时,会变成C:/fakePath问题,于是乎通过文件路径去获得文件大小就失败了. 上网搜了一下,主要原因是IE8因为安全考虑,在上传文件时屏蔽了真实 ...

  2. Delphi XE的firemonkey获取当前文件所在路径的方法

    Delphi XE的firemonkey获取当前文件所在路径的方法 在之前,我们知道有三种方法: ExtractFilePath(ParamStr(0)) ExtractFilePath(Applic ...

  3. jstl删除session,choose,动态获取request当前工程路径

    1.jstl标签c:remove删除session request.getSession().setAttribute("ssmsg", "修改成功"); &l ...

  4. VC 获取指定文件夹路径的方法小结

    VC获取指定文件夹路径 flyfish  2010-3-5 一 使用Shell函数 1 获取应用程序的安装路径 TCHAR buf[_MAX_PATH];SHGetSpecialFolderPath( ...

  5. 在java程序当中怎么获取一个文件的路径

    在java程序当中怎么获取一个文件的路径? * 当这个文件在类路径下的时候(在src/bin目录下的时候): String absolutePath = Thread.currentThread(). ...

  6. java 获取class文件所在路径

      java 获取class文件所在路径 CreateTime--2017年11月14日15:14:32 Author:Marydon 1.获取class文件所在路径(磁盘路径.绝对路径) // 获取 ...

  7. Python 使用 os 模块遍历目录/获取当前文件的路径

    1.列出指定目录下所包含的目录 item = os.listdir("/Users/jinchengxie/go") 返回的是一个列表, 里面包含了指定目录下所包含的所有的目录 2 ...

  8. python 获取当前文件夹路径及父级目录的几种方法

    获取当前文件夹路径及父级目录: import os current_dir = os.path.abspath(os.path.dirname(__file__)) print(current_dir ...

  9. 获取.jar文件运行时所处的路径

    在Windows控制台中运行.jar文件时的两种环境: (1)控制台当前所在目录是.jar文件所在的目录 (2)控制台当前所在目录不是.jar文件所在的目录 我的期望: 我希望在上述两种环境下均可以得 ...

随机推荐

  1. 想使用 MongoDB ,你应该了解这8个方面!

    应用性能高低依赖于数据库性能,MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关 ...

  2. POJ2299+逆序数

    归并排序!!!!!!!!!! /* 归并排序+求逆序数 */ #include<stdio.h> #include<string.h> #include<algorith ...

  3. easyui源码翻译1.32--ValidateBox(验证框)

    前言 使用$.fn.validatebox.defaults重写默认值对象.下载该插件翻译源码 validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效.如果用户输入了无效的值,它将 ...

  4. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-007-给BEAN运行时注入值placeholder、@Value

    一.用placeholder给bean运行时注入值的步骤 Spring取得placeholder的值是用${...} 1.声明placeholder bean (1)java方式 In order t ...

  5. grep简单常用的语法介绍

    说明: grep -n 关键字 查询的文档 ->-n表示打印行号 grep -c 关键字 查询的文档1 查询的文档2 ->-c表示输出匹配行的数目,而不是输出匹配的行. grep -rn ...

  6. Structs 原理图

    Struts开源架构很好的实现了MVC模式,MVC即Model-View-Controller的缩写,是一种常用的设计模式.MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化.MV ...

  7. TigerLeapMC V1.3 for Windows(支持DLNA)

    TigerLeapMC V1.3 2014-04-10: 1.更新tlplayer TigerLeapMC是基于tlplayer作为播放器的集成DLNA,(DMS,DMR,DMP)等,支持各种网络播放 ...

  8. BrandZ:2016年全球最具价值品牌百强榜(完整报告)

    https://wppbaz.com/admin/uploads/files/BZ_Global_2016_Report.pdf Millward Brown编制的BrandZ最新排行榜(2016 B ...

  9. Linux改变进程优先级的nice命令

    前言: VPS普遍性能不高,很多人可能有这样一个感受,在执行du.tar等命令时,会造成系统负载飙升,Apache响应缓慢.这时nice命令改变进程优先级可能能缓解这种状况.nice命令用于调整Lin ...

  10. c#基础这些你都看过吗?(一)-----仅供初学者使用

    1.注释(不写注释是流氓,名字瞎起是扯淡)‘///’一般用于注释函数,注释类.2.快捷键ctrl+k+d(有语法错误无法进行对齐)ctrl+j(快速弹出只能提示)shift+end,shift+hom ...