获取本类路径

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(0,pos-1);

//如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名

if(realPath.endsWith("!"))

realPath=realPath.substring(0,realPath.lastIndexOf("/"));

/*------------------------------------------------------------

ClassLoader的getResource方法使用了utf-8对路径信息进行了编码,当路径

中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要

的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的

中文及空格路径

-------------------------------------------------------------*/

try{

realPath=java.net.URLDecoder.decode(realPath,"utf-8");

}catch(Exception e){throw new RuntimeException(e);}

return realPath;

}//getAppPath定义结束

时间: 2024-10-19 04:23:00

获取本类路径的相关文章

Java如何获取当前类路径

1.如何获得当前文件路径 常用: (1).Test.class.getResource("") 得到的是当前类FileTest.class文件的URI目录.不包括自己! (2).Test.class.getResource("/") 得到的是当前的classpath的绝对URI路径. (3).Thread.currentThread().getContextClassLoader().getResource("") 得到的也是当前ClassPat

java获取当前类的绝对路径

转自: http://blog.csdn.net/elina_1992/article/details/47419097 1.如何获得当前文件路径 常用: (1).Test.class.getResource("") 得到的是当前类FileTest.class文件的URI目录.不包括自己! (2).Test.class.getResource("/") 得到的是当前的classpath的绝对URI路径. (3).Thread.currentThread().getC

java 获取当前类的路径

最近在做项目的时候,自己写了一些配置参数的读取,将配置文件放到具体的位置,然后让程序根据当前类的路径寻找配置文件的路径,但是,发现eclipse的开发坏境下是可以顺利读取到指定路径下的配置文件中的配置参数的, 但是当将项目放到Tomcat下  或者 将项目打包成可执行jar包之后,编译后的class文件却读取不到了开发环境下寻找的配置文件了. 如果在 .java 文件中直接写// public static  String Config = "config.properties"; 

获取类路径下的资源

对于JavaWeb而言,获取类路径下的资源,就是获取classes目录下的资源. 获取资源的方式有两种,利用Class或ClassLoader. Class类的getResourceAsStream(String path): 路径以"/"开头,相对classes路径: 路径不以"/"开头,相对当前class文件所有路径: ClassLoader类的getResourceAsStream(String path): 相对classes路径: 下面是我的目录结构: 代

java 获取类路径

package com.jason.test; import java.io.File; import java.io.IOException; import java.net.URL; public class MyUrlDemo { public static void main(String[] args) { MyUrlDemo muDemo = new MyUrlDemo(); try { muDemo.showURL(); } catch (IOException e) { // T

获取当前工程路径

1.利用System.getProperty()函数获取当前路径:System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径:File directory = new File("");//设定为当前文件夹try{    System.out.println(directory.getCanonicalPath());//获取标准的路径    Sy

java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(1)

java学习一段时间之后,大家可能经常会听到反射这个词,那么说明java已经学习到一个高一点的层次了.接下来我会一步步和大家一起揭开java高级特性反射的神秘面纱. 首先介绍下类对象这个概念,可能会经常用到这个概念: 类对象:java中有句很经典的话"万事万物皆对象",相信大家都不陌生,这句话告诉了我们java的特征之一,那就是面向对象.java中类的概念我们都很熟悉,既然万事万物皆是对象,那么类是谁的对象呢?<对象的概念:一个类的实例>换句话说,类是谁的实例.如此就有了类

java ,js获取web工程路径

一.java获取web工程路径 1),在servlet可以用一下方法取得: request.getRealPath(“/”) 例如:filepach = request.getRealPath(“/”) ”//upload//”; 2),不从jsp,或servlet中获取,只从普通java类中获取: String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); SAXReader()

获取指定类上的@RequestMapping注解的请求信息

通过上一篇博客,我们能够轻松的得到制定类上的制定注解.现在,我们尝试获取指定类上的@RequestMapping注解,并获取该控制层的全部请求信息.在这里,提供一个实体类,用于存放请求的部分信息. public class RequestUrlInfo implements Comparable<RequestUrlInfo>{ private String name; //mapping的名称 private String value; //mapping的请求路径 private Requ