Java - Apache CXF从Jar加载WSDL

问题描述:

我正在使用Apache CXF连接到SOAP API。我在我的Eclipse项目中保存了WSDL,我想加载它。我的项目是这样的:Java - Apache CXF从Jar加载WSDL

src 
gen 
resources + 
      META-INF + 
        myWSDL.wsdl 

我可以加载WSDL,如果我从我的驱动器的根目录的路径硬代码:

static { 
    URL url = null; 
    try { 
     url = new URL("file:/home/peter/workspace/project/resources/META-INF/myWSDL.wsdl"); 
     System.out.println(url); 
    } catch (MalformedURLException e) { 
     //blah 
    } 
} 

但是,如果我尝试加载WSDL作为它失败的资源:

static { 
    URL url = null; 
    try { 
        url = MyServiceClass.class.getResource("/resource/META-INF/BFExchangeService.wsdl"); 

     System.out.println(url); //prints null 
    } catch (MalformedURLException e) { 
     //blah 
    } 
} 

如何从我的项目(并最终,我的.jar)中加载WSDL?

干杯,

皮特

Class.getResource负载从类路径文件,所以你在正确的轨道上。

因此,将您的wsdl存储在您的类路径中的某处,例如您的源文件夹,并将源文件夹视为“文件系统”的根目录,例如getResource("/myWSDL.wsdl")

HTH