看了文章http://lpacec.iteye.com/blog/33577
getClass().getResource("/").getPath()可以获取class所在的绝对路径
今天我在启动工程的时候突然发现该方法获取的绝对路径改变了:
[b]原来可以获取的路径是:.../target/classes/
现在变为了:.../target/test-classes/[/b]
我检查了:.../target/test-classes/文件夹,在该文件夹下并没有发现对应的class文件
一些替代的方法当然在网站上也能找到,
我就是想请大家帮忙分析一下,可能是什么原因造成getClass().getResource("/").getPath()获取路径的改变?
呵呵 可以把那个test-class目录删掉不?
看看你的工程的build path中
output的路径是不是已经修改了
可不可以把你的工程目录贴出来 看看~
用System.out.println(test.getClass().getClassLoader().getResource(".").getPath());看看
重新clean并build一下工程试试
这种情况的原因 我只能想到 output的问题
看一下你的项目还编译吗?在clean的时候,另外去路径最好不要用getClass().getResource("/").getPath()
用下面这个:
Class objClass = this.getClass();
String strRealPath = objClass.getClassLoader().getResource("").getFile();
strRealPath = URLDecoder.decode(strRealPath, "UTF-8");
File objFile = new File(strRealPath);
strRealPath = objFile.getParent();
比如
部署在tomcat下使用了getClass().getResource("/").getPath() 得到的是项目的路径
但是移植到weblogic之后,这个命令的返回值就变成weblogic下的domain路径
如果lz的项目部署在web服务器上的话 最好还是用listener的getServletContext()来获取啦~