读取类所在目录路径
来源:互联网 发布:mac开机进入客人用户 编辑:程序博客网 时间:2024/06/05 07:41
Service:
/** * ----------------------------------------------------------------------- *getAppPath需要一个当前程序使用的Java类的class属性参数,它可以返回打包过的 *Java可执行文件(jar,war)所处的系统目录名或非打包Java程序所处的目录 *@paramcls为Class类型 *@return返回值为该类所在的Java程序运行的目录 * ------------------------------------------------------------------------- */public static String getAppPath(Class cls) { //检查用户传入的参数是否为空 if (cls == null) throw new java.lang.IllegalArgumentException("参数不能为空!"); ClassLoader loader = cls.getClassLoader(); //获得类的全名,包括包名 String clsName = cls.getName() + ".class"; //获得传入参数所在的包 Package pack = cls.getPackage(); String path = ""; //如果不是匿名包,将包名转化为路径 if (pack != null) { String packName = pack.getName(); //此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库 if (packName.startsWith("java.") || packName.startsWith("javax.")) throw new java.lang.IllegalArgumentException("不要传送系统类!"); //在类的名称中,去掉包名的部分,获得类的文件名 clsName = clsName.substring(packName.length() + 1); //判定包名是否是简单包名,如果是,则直接将包名转换为路径, if (packName.indexOf(".") < 0) path = packName + "/"; else { //否则按照包名的组成部分,将包名转换为路径 int start = 0, end = 0; end = packName.indexOf("."); while (end != -1) { path = path + packName.substring(start, end) + "/"; start = end + 1; end = packName.indexOf(".", start); } path = path + packName.substring(start) + "/"; } } //调用ClassLoader的getResource方法,传入包含路径信息的类文件名 java.net.URL url = loader.getResource(path + clsName); //从URL对象中获取路径信息 String realPath = url.getPath(); //去掉路径信息中的协议名"file:" int pos = realPath.indexOf("file:"); if (pos > -1) realPath = realPath.substring(pos + 5); //去掉路径信息最后包含类文件信息的部分,得到类所在的路径 pos = realPath.indexOf(path + clsName); realPath = realPath.substring(1, pos - 1); //如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名 if (realPath.endsWith("!")) realPath = realPath.substring(0, realPath.lastIndexOf("/")); try { realPath = java.net.URLDecoder.decode(realPath, "utf-8"); } catch (Exception e) { throw new RuntimeException(e); } System.out.println(realPath); return realPath;}//getAppPath定义结束
传入一个类,测试结果:D:/workspace/bcr/server/target/classes
/** * 查询jar包运行路径 * * @return */public static String getJarUrl() { URL url = JarUrlUtil.class.getProtectionDomain().getCodeSource().getLocation(); String filePath = ""; try { filePath = URLDecoder.decode(url.getPath(), "utf-8");// 转化为utf-8编码,支持中文 } catch (Exception e) { logger.error(e.getMessage(), e); } int i = filePath.indexOf(".jar"); if (i >= 0) {// 可执行jar包运行的结果里包含".jar" // 获取jar包所在目录 filePath = filePath.substring(0, filePath.lastIndexOf("/", i) + 1); } File file = new File(filePath); filePath = file.getAbsolutePath(); i = filePath.indexOf("file:"); if (i >= 0) { filePath = filePath.substring(0, filePath.lastIndexOf(File.separator, i)); } String classesUrl = File.separator + "classes"; i = filePath.indexOf(classesUrl); if (i >= 0) { filePath = filePath.substring(0, i); } return filePath;}//getJarUrl定义结束
1 0
- 读取类所在目录路径
- 读取dll所在路径
- 获取当前应用程序所在目录的路径
- 获取当前程序所在路径/目录
- 获取.EXE可执行文件所在的目录路径
- 获取javaweb项目所在目录的路径
- Linux迁移tomcat所在目录路径
- js获取当前页面所在目录路径
- Python获取脚本所在目录路径
- java读取不到properties文件所在路径
- 读取系统目录路径
- php获取文件所在目录路径信息 计算程序路径
- Oracle 数据库安装规范--database所在路径和归档目录所在路径必须分开
- Oracle db规范之 database所在路径和归档目录所在路径必须分开
- Oracle 数据库安装规范--database所在路径和归档目录所在路径必须分开
- 获取当前程序所在服务器的目录路径
- [API学习]获取程序所在的目录,路径
- php --- dirname(__FILE__) 获取网站所在目录全路径
- 3.AbstractFactory-抽象工厂模式
- 4.Singleton-单例模式
- 5.Builder-建造者模式
- 6.Prototype-原型模式
- 7.Adapter-适配器模式
- 读取类所在目录路径
- 8.Decorator-装饰模式
- 9.Proxy-代理模式
- Mybits入门--配置文件使用
- 信息安全工程师 学习笔记(十三)
- 异步下载图片,动态设置cell高度
- PHP--笔试题
- 10.Facade-外观模式
- Jenkins进阶系列之——14配置Jenkins用户和权限