动态获取jar文件的路径
- 下面专门封装了一个类来处理:
- import java.io.File;
- /**
- * 获取打包后jar的路径信息
- * @author Administrator
- * 2011-01-16 13:53:12
- */
- public class JarTool {
- //获取jar绝对路径
- public static String getJarPath(){
- File file = getFile();
- if (file== null ) return null ;
- return file.getAbsolutePath();
- }
- //获取jar目录
- public static String getJarDir() {
- File file = getFile();
- if (file== null ) return null ;
- return getFile().getParent();
- }
- //获取jar包名
- public static String getJarName() {
- File file = getFile();
- if (file== null ) return null ;
- return getFile().getName();
- }
- private static File getFile() {
- //关键是这行...
- String path = JarTool.class .getProtectionDomain().getCodeSource()
- .getLocation().getFile();
- try {
- path = java.net.URLDecoder.decode(path, "UTF-8" ); //转换处理中文及空格
- }catch (java.io.UnsupportedEncodingException e){
- return null ;
- }
- return new File(path);
- }
- }
- 必须要打包成jar后才能正确获取相关路径信息,下面写了个测试类:
- Java代码 收藏代码
- import javax.swing.JFrame;
- import javax.swing.JTextArea;
- public class TestFrame extends JFrame{
- public TestFrame() {
- JTextArea ta = new JTextArea();
- ta.setEditable(false );
- ta.append("name: " +JarTool.getJarName()+ "/n" );
- ta.append("dir: " +JarTool.getJarDir()+ "/n" );
- ta.append("path: " +JarTool.getJarPath()+ "/n" );
- add(ta);
- pack();
- setTitle("动态获取Jar路径信息" );
- setVisible(true );
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public static void main(String[] args) {
- new TestFrame();
- }
- }
- 将上面一起打包成path.jar后放到桌面运行结果:
- 无论path.jar放到任何地方都能得到正确的路径信息 (*^__^*) 嘻嘻……
- 主要靠下面两行代码实现
- class.getProtectionDomain().getCodeSource().getLocation().getFile(); 这行作用是获取当前的绝对路径信息
- java.net.URLDecoder.decode(path, "UTF-8"); 此行是将path中的空格和中文“乱码”转换正确回显
- 对此可以为自己做的软件“注册”随系统开机启动了...
动态获取jar文件的路径的更多相关文章
- IE8下服务端获取客户端文件的路径为C:/fakePath问题的解决方案
上一篇文章上提到,IE8下服务端获取客户端文件的路径时,会变成C:/fakePath问题,于是乎通过文件路径去获得文件大小就失败了. 上网搜了一下,主要原因是IE8因为安全考虑,在上传文件时屏蔽了真实 ...
- Delphi XE的firemonkey获取当前文件所在路径的方法
Delphi XE的firemonkey获取当前文件所在路径的方法 在之前,我们知道有三种方法: ExtractFilePath(ParamStr(0)) ExtractFilePath(Applic ...
- jstl删除session,choose,动态获取request当前工程路径
1.jstl标签c:remove删除session request.getSession().setAttribute("ssmsg", "修改成功"); &l ...
- VC 获取指定文件夹路径的方法小结
VC获取指定文件夹路径 flyfish 2010-3-5 一 使用Shell函数 1 获取应用程序的安装路径 TCHAR buf[_MAX_PATH];SHGetSpecialFolderPath( ...
- 在java程序当中怎么获取一个文件的路径
在java程序当中怎么获取一个文件的路径? * 当这个文件在类路径下的时候(在src/bin目录下的时候): String absolutePath = Thread.currentThread(). ...
- java 获取class文件所在路径
java 获取class文件所在路径 CreateTime--2017年11月14日15:14:32 Author:Marydon 1.获取class文件所在路径(磁盘路径.绝对路径) // 获取 ...
- Python 使用 os 模块遍历目录/获取当前文件的路径
1.列出指定目录下所包含的目录 item = os.listdir("/Users/jinchengxie/go") 返回的是一个列表, 里面包含了指定目录下所包含的所有的目录 2 ...
- python 获取当前文件夹路径及父级目录的几种方法
获取当前文件夹路径及父级目录: import os current_dir = os.path.abspath(os.path.dirname(__file__)) print(current_dir ...
- 获取.jar文件运行时所处的路径
在Windows控制台中运行.jar文件时的两种环境: (1)控制台当前所在目录是.jar文件所在的目录 (2)控制台当前所在目录不是.jar文件所在的目录 我的期望: 我希望在上述两种环境下均可以得 ...
随机推荐
- JAVA自学之-----FileInputStream类
1, FileInputStream类函数创建: package coreJava; import java.io.FileInputStream; import java.io.IOExceptio ...
- Nagios 邮箱告警的方式太OUT了!
一般来讲,在安装完 Nagios 后,我们做的第一件最正确的事,就是设置它的邮件通知,对吧.因为如果没有这一步骤的话,你怎么能够知道什么时候会出现问题呢? 伴随着成功的初始安装,你即将是你司唯一一个能 ...
- show processlist 执行状态分析
Sleep状态 通常代表资源未释放,如果是通过连接池,sleep状态应该恒定在一定数量范围内 实战范例:因前端数据输出时(特别是输出到用户终端)未及时关闭数据库连接,导致因网络连接速度产生大量slee ...
- Maven引入依赖后自动下载并关联源码(Source)
好多用 Maven 的时候会遇到这样一个棘手的问题: 就是添加依赖后由于没有下载并关联源码,导致自动提示无法出现正确的方法名,而且不安装反编译器的情况下不能进入方法内部看具体实现 . 其实 eclip ...
- linux-0.11内核 任务的堆栈切换
http://blog.163.com/di_yang@yeah/blog/static/86118492201212534924900/ 一直缠绕的两个问题:怎样标识的内核栈与用户栈?如何在内核态堆 ...
- 在Qt中使用sleep(包含为win and *nix下sleep函数的实现及用法)
http://blog.csdn.net/tingsking18/article/details/5304254 关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程 ...
- SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-007-表单验证@Valid、Error
一. Starting with Spring 3.0, Spring supports the Java Validation API in Spring MVC . No extra config ...
- poj1724ROADS(BFS)
链接 本来想写spfa 加点什么限制什么的可能就过了 写着写着就成裸BFS了 也没优化就水过了 #include <iostream> #include<cstdio> #in ...
- USACO3.23Spinning Wheels
直接枚举角度 数据比较水吧 /* ID: shangca2 LANG: C++ TASK: spin */ #include <iostream> #include<cstdio&g ...
- 生成Excel錯誤 遠端程序呼叫失敗。 (發生例外狀況於 HRESULT: 0x800706BE)
错误信息:详细信息:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005.网上找到 ...