我将配置文件也打进在jar包中,其中有两个配置文件存在相互应用关系:
A配置文件中有<xs:include schemaLocation="./B.xsd"/> 引用B配置文件
B配置文件和A配置文件在同一目录下在程序中通过this.getClass().getClassLoader().getResource("conf/A.xsd");可以成功访问到A配置文件,但是B配置文件无论如何都访问不到了
各位高人有遇到这种情况么?该如何解决呐?

解决方案 »

  1.   

    试试将A.xsd文件改成C.xsd 看看使用 this.getClass().getClassLoader().getResource("conf/C.xsd"); 或 this.getClass().getClassLoader().getResource("conf/A.xsd");哪个能成功引用基本就知道原因.
      

  2.   

    ����jar��û�й�ϵ,�ص��Ų�Ϊʲôa������b!
      

  3.   

    楼上的仁兄你们没清楚我的意思:
    getClass().getResouce()方法是可以找到A配置文件的,我在程序中也是这么写的,但是A配置文件中include了B配置文件,我的程序只找A配置文件,是不会去管B文件的,现在的问题是发现不打包时找A文件时B文件成功Include了,但是一打包B就Include不了了
      

  4.   

    没有道理啊。ab是不是在一个目录,确定是不是在classpath下
      

  5.   

    多试几种引用方式呢<xs:include schemaLocation="conf/B.xsd"/>等等
      

  6.   

    两个JAR包的目录是相同的?能这么理解吗classload肯定不知道从那个目录找啊
      

  7.   

    哦。。 原来这样,不过你写出来的程序不足以做判断,我就假设下。
    假如程序找到A文件,但是找不到B文件,那么程序就是不能确定A文件的位置,因为如果知道A文件的位置就能找到B文件。所以,我觉得可以修改下,getClassLoader().getResouce()方法返回URL对象后,用URL.getPath()方法返回文件路径,再new File(),获取A文件的对象再处理。上面是假设,如果不对,请楼主将处理A文件的程序贴出来看看。