我想根据一个类的名称返回这个类的路径,结果返回的路径下面多了一个!符号。
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中就自动带上了。

解决方案 »

  1.   

    试一下
    ClassLoader.getSystemClassLoader().getResource(strClassFileName + ".class")
      

  2.   

    这样试一下,加上this:
    url = this.getClass().getResource(strClassFileName+ ".class"); 
      

  3.   

    对了,系统找不到指定的路径:如果你指定的路径以/开头,那么就是从ClassPath的起点开始寻找这个路径。
    如果直接以某个名字开头,那么就是从当前包名的目录为起点开始寻找。而楼上朋友说的在使用ClassLoader的getResource方法的时候,永远是以Classpath为直接起点开始寻找
    资源的。不用担心从什么包开始寻找的问题。用Class.getResource不加/就是从当前包开始找,用ClassLoader.getResource不加/就是
    直接从Classpath的起点开始寻找。
      

  4.   

    问题解决了,web容器的classloader产生的bug,升级了容器版本就好了。