我想根据一个类的名称返回这个类的路径,结果返回的路径下面多了一个!符号。
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的起点开始寻找。