我在此的帮助下学习CXF的过程中的Apache CXF Web服务开发的书,但是,唉,这本书的样本项目甚至不会编译之一!
有问题的代码是第3章的contractfirst
它,因为我使用逐字从下载的源代码是不是一个错字问题本书的支持网站 。
3个编译错误实际上指向一个问题:
Chapter3\contractfirst\src\demo\order\OrderProcessService.java:52: cannot find symbol
symbol: constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[])
location: class javax.xml.ws.Service
super(WSDL_LOCATION, SERVICE, features);
^
在文件OrderProcessService.java。
初始重新搜索表明,这可能是一个JAX-WS 2.2与2.1的问题,但我不知道如何使这个基于ANT编译环境“背书” JAX-WS 2.2。
我试着放置jaxws-api.jar
在%JAVA_HOME%\lib\endorsed
和我尝试添加该JAR到项目的库列表中,但似乎没有帮助。
我没有使用Maven的 ,所以我甚至无法将其列为依赖,并希望这将是奇迹般地解决。
任何想法如何解决这个问题? 所以,我可以使这个非常简单的项目建设?
从你的描述,这听起来类似描述的问题在这个岗位 。
为了解决这个问题,你可以简单地复制jaxb-api.jar
, jaxws-api.jar
到JDK的JRE的/lib/endorsed
需要注意的是“认可”是指将相关的JAR文件(JAXB-api.jar中,JAXWS-api.jar文件在这种情况下)在%JAVA_HOME%\jre\lib\endorsed
(注意jre
路径)。 不要直接JDK的lib目录下创建endorsed目录。
或者......如果你不想碰你的JDK安装,使用这些ENV瓦尔正在使用的wsimport和WSGEN(其中JAXWS_HOME点到JAX-WS 2.1安装):
WSIMPORT_OPTS=-Djava.endorsed.dirs=%JAXWS_HOME%/lib
WSGEN_OPTS=-Djava.endorsed.dirs=%JAXWS_HOME%/lib
或...如果你使用Ant任务,你可以通过-Djava.endorsed.dirs=%JAXWS_HOME%/lib
作为jvmarg同时呼吁的wsimport和WSGEN Ant任务(这个工作,你需要设置叉=“true”属性的wsimport和WSGEN蚂蚁的任务)。
幸得拉玛Pulavarthi 。
赞同的2.2版本的JAXWS-API罐子应该工作。 您也可以通过“-Fe jaxws21”标志的CXF的WSDL2Java命令让它产生2.1兼容的代码来代替。
仅添加Web服务的 API-2.2.jar%JAVA_HOME%\ JRE \ LIB \赞同已解决的问题对我来说。