一、问题描述
eclipse集成环境,spring 4.1.3.RELEASE + cxf 2.5.0框架,开发的Webservice客户端程序。在eclipse开发环境下运行正常,导出runnable jar包时出现如下异常:
java.lang.NullPointerException: null
at org.apache.cxf.wsdl11.WSDLServiceFactory.(WSDLServiceFactory.java:92)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.(ServiceImpl.java:148)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:90)
at javax.xml.ws.Service.(Unknown Source) ~[na:1.7.0_79]
二、初步分析
既然代码工程在eclipse能够正常运行,导出包后出现空指针异常,应该是打包的问题,runnable jar打包对依赖库的处理方式有三种,如下图所示:
Library handing的三种处理方式解释如下:
1、Extract required libraries into generated JAR。
把项目中所有的依赖jar包内的class,xml等文件都拆开,放在jar的对应的目录中,即导出的jar文件是一个独立的,没有其他依赖jar包的文件,因为依赖的jar包已经全部拆散了。
2、Package required libraries into generated JAR。
把项目中所有的import jar都包在jar的根目录下,还是以依赖包的形式存在