javac找不到符号构造函数服务

javac找不到符号构造函数服务,java,ant,jax-ws,cxf,endorsed,Java,Ant,Jax Ws,Cxf,Endorsed,在本书的帮助下,我正在学习CXF,但是,唉,本书的一个示例项目甚至不会编译 讨论中的代码是第3章的contractfirst,它不是一个打字问题,因为我使用的是从下载的源代码 3个编译错误实际上指向一个问题: Chapter3\contractfirst\src\demo\order\OrderProcessService.java:52: cannot find symbol symbol: constructor Service(java.net.URL,javax.xml.namespac

在本书的帮助下,我正在学习CXF,但是,唉,本书的一个示例项目甚至不会编译

讨论中的代码是第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文件中

最初的re建议这可能是一个问题,但我不知道如何使这个基于ANT的编译环境“认可”JAX-WS2.2

我尝试将
jaxws-api.jar
放在
%JAVA\u HOME%\lib\approved
中,并尝试将该jar添加到项目的库列表中,但似乎没有任何帮助

我没有使用,所以我甚至不能把它列为依赖项,希望它能神奇地解决


你知道怎么解决这个问题吗?所以我可以进行这个非常简单的项目构建?

认可jaxws api jar的2.2版本应该可以。您还可以将“-fe jaxws21”标志传递给CXF wsdl2java命令,使其生成与2.1兼容的代码。

根据您的描述,这听起来与所描述的问题类似

为了解决这个问题,只需将
jaxbapi.jar
jaxws-api.jar
复制到JDK的JRE中即可
/lib/annowed

注意“背书”意味着将相关JAR文件(本例中为jaxb-api.JAR、jaxws-api.JAR)放置在
%JAVA\u HOME%\jre\lib\annowed
(注意路径中的
jre
)。不要直接在JDK的lib目录下创建被认可的目录

或者。。。如果您不想接触JDK安装,请使用以下环境变量:使用wsimport和wsgen(其中JAXWS_HOME指向JAX-WS 2.1安装):

或者。。。如果使用ant任务,则在调用wsimport和wsgen ant任务时,可以将
-Djava.annowed.dirs=%JAXWS_HOME%/lib
作为jvmarg传递(要使其工作,需要设置wsimport和wsgen ant任务的fork=“true”属性)


值得赞扬的是。

%JAVA\u HOME%\jre\lib\approved中单独添加webservices-api-2.2.jar已经为我解决了这个问题。

您使用什么版本的JAVA构建示例?您提到的源代码在JAVA 1.6、Ant 1.8.2、Mac OS X 10.7.5中构建的很好。您能否确认您的系统统计信息,并且您没有以任何方式修改下载的源项目?@Perception CXF版本更为关键,正如
%JAVA\u HOME%\jre\lib
(与我所做的%JAVA\u HOME%\lib相比)所暗示的那样。非常感谢。
WSIMPORT_OPTS=-Djava.endorsed.dirs=%JAXWS_HOME%/lib
WSGEN_OPTS=-Djava.endorsed.dirs=%JAXWS_HOME%/lib