日期:2014-05-20  浏览次数:21088 次

用getResource方法返回的路径中多了一个!符号。
我想根据一个类的名称返回这个类的路径,结果返回的路径下面多了一个!符号。
URL url = null;
url = getClass().getResource(strClassFileName + ".class");
String strURL = url.toString();
strURL = strURL.substring(strURL.indexOf('/') + 1, strURL.lastIndexOf('/'));
return strURL;

错误表现为
08/10/22 16:52:26 java.io.FileNotFoundException: D:\Code\JAVA\service\WebRoot\WEB-INF\classes\!com\service\directory\ (系统找不到指定的路径。)
返回的路径下面中在classes后面突然多出来!符号,我单步进去发现getResource返回的url中就自动带上了。

------解决方案--------------------
试一下
Java code
ClassLoader.getSystemClassLoader().getResource(strClassFileName + ".class")

------解决方案--------------------
这样试一下,加上this:
Java code

url = this.getClass().getResource(strClassFileName+ ".class");

------解决方案--------------------
对了,系统找不到指定的路径:

如果你指定的路径以/开头,那么就是从ClassPath的起点开始寻找这个路径。
如果直接以某个名字开头,那么就是从当前包名的目录为起点开始寻找。

而楼上朋友说的在使用ClassLoader的getResource方法的时候,永远是以Classpath为直接起点开始寻找
资源的。不用担心从什么包开始寻找的问题。

用Class.getResource不加/就是从当前包开始找,用ClassLoader.getResource不加/就是
直接从Classpath的起点开始寻找。