2012-12-12 16 views
11

के साथ विफलता मैं अपने वेब सेवा क्लाइंट के लिए स्रोत उत्पन्न करने और निम्नलिखित अपवाद प्राप्त करने के लिए jaxws maven प्लगइन का उपयोग करने का प्रयास कर रहा हूं;jaxws-maven-plugin 2.2 NoSuchMethodError()

[ERROR] Failed to execute goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.2:wsimport (default) on project cf-wsjavaclient: Error executing: wsimpor 
t [-keep, -s, C:\Users\sjunejo\Documents\GitHub\sandbox-ofsconnectorpoc\cf-wsjavaclient\target, -Xnocompile, http://localhost:9090/axis2/services/OFSC 
onnectorServiceWS?wsdl]: UndeclaredThrowableException: javax.xml.bind.annotation.XmlElementRef.required() -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.2:wsimport (default) on p 
roject cf-wsjavaclient: Error executing: wsimport [-keep, -s, C:\Users\sjunejo\Documents\GitHub\sandbox-ofsconnectorpoc\cf-wsjavaclient\target, -Xnoco 
mpile, http://localhost:9090/axis2/services/OFSConnectorServiceWS?wsdl] 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Error executing: wsimport [-keep, -s, C:\Users\sjunejo\Documents\GitHub\sandbox-ofsconnecto 
rpoc\cf-wsjavaclient\target, -Xnocompile, http://localhost:9090/axis2/services/OFSConnectorServiceWS?wsdl] 
     at org.jvnet.jax_ws_commons.jaxws.WsImportMojo.wsImport(WsImportMojo.java:360) 
     at org.jvnet.jax_ws_commons.jaxws.WsImportMojo.processWsdlViaUrls(WsImportMojo.java:342) 
     at org.jvnet.jax_ws_commons.jaxws.WsImportMojo.execute(WsImportMojo.java:283) 
     at org.jvnet.jax_ws_commons.jaxws.MainWsImportMojo.execute(MainWsImportMojo.java:30) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
     ... 19 more 
Caused by: java.lang.reflect.UndeclaredThrowableException 
     at $Proxy44.required(Unknown Source) 
     at com.sun.tools.xjc.generator.bean.field.AbstractField.annotateReference(AbstractField.java:192) 
     at com.sun.tools.xjc.generator.bean.field.AbstractField.annotate(AbstractField.java:161) 
     at com.sun.tools.xjc.generator.bean.field.AbstractFieldWithVar.createField(AbstractFieldWithVar.java:80) 
     at com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:94) 
     at com.sun.tools.xjc.generator.bean.field.SingleField.<init>(SingleField.java:81) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at com.sun.tools.xjc.generator.bean.field.GenericFieldRenderer.generate(GenericFieldRenderer.java:69) 
     at com.sun.tools.xjc.generator.bean.field.DefaultFieldRenderer.generate(DefaultFieldRenderer.java:82) 
     at com.sun.tools.xjc.generator.bean.BeanGenerator.generateFieldDecl(BeanGenerator.java:774) 
     at com.sun.tools.xjc.generator.bean.BeanGenerator.generateClassBody(BeanGenerator.java:555) 
     at com.sun.tools.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:258) 
     at com.sun.tools.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:166) 
     at com.sun.tools.xjc.model.Model.generateCode(Model.java:290) 
     at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:283) 
     at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:94) 
     at com.sun.tools.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.java:142) 
     at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.java:2244) 
     at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:191) 
     at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:137) 
     at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:381) 
     at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:198) 
     at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:179) 
     at com.sun.tools.ws.WsImport.doMain(WsImport.java:74) 
     at org.jvnet.jax_ws_commons.jaxws.WsImportMojo.wsImport(WsImportMojo.java:357) 
     ... 24 more 
Caused by: java.lang.NoSuchMethodException: javax.xml.bind.annotation.XmlElementRef.required() 
     at java.lang.Class.getDeclaredMethod(Class.java:1937) 
     at com.sun.codemodel.TypedAnnotationWriter.invoke(TypedAnnotationWriter.java:112) 
     ... 52 more 

यहां मेरा पोम है जिसका मैं प्रोजेक्ट बनाने के लिए उपयोग कर रहा हूं;

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.xxxxx</groupId> 
    <artifactId>cf-wsjavaclient</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>cf-wsjavaclient</name> 
    <properties> 
     <wsdlLoc>http://localhost:9090/axis2/services/OFSConnectorServiceWS?wsdl</wsdlLoc> 
     <skipTests>true</skipTests> 
    </properties> 
    <build> 
     <plugins> 
     <plugin> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.6</version> 
      <!-- Disable tests for now, until we have client jar built then we can run as follows; 
       To run the tests: 
       $ mvn verfiy -DskipTests=false 
      -->    
      <configuration> 
       <skipTests>${skipTests}</skipTests> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
      <plugin> 
       <groupId>org.jvnet.jax-ws-commons</groupId> 
       <artifactId>jaxws-maven-plugin</artifactId> 
       <version>2.2</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>wsimport</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <wsdlUrls> 
         <wsdlUrl>${wsdlLoc}</wsdlUrl> 
        </wsdlUrls> 
        <sourceDestDir>${basedir}/target</sourceDestDir> 
       </configuration> 
      </plugin> 
      <!-- Don't forget to use endorsed with JAX-WS 2.2 on Java 6 !! --> 
       <!-- plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <compilerArguments> 
         <endorseddirs>${basedir}/endorsed</endorseddirs> 
         </compilerArguments> 
        </configuration> 
       </plugin--> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>com.sun.xml.ws</groupId> 
      <artifactId>jaxws-rt</artifactId> 
      <version>2.2.6</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>2.2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8.2</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

मैं जानकारी प्राप्त करने की कोशिश की लेकिन वहाँ कुछ भी नहीं उपलब्ध है। क्या आप मदद कर सकतें है।

धन्यवाद

-

Sjunejo

+0

बस के रूप में मैं $ JAVA_HOME/bin से wsimport फोन करके सरल जावा वर्ग से स्रोत उत्पन्न करने के लिए कोशिश की है और यह एक आकर्षण की तरह काम करता कुछ और जानकारी .... कोशिश कर के घंटे – SJunejo

उत्तर

14

मैं हाल ही में एक ही त्रुटि हो रही थी।
ऐसा लगता है कि यह 2.1 और JAXB 2.2 संस्करणों के साथ क्योंकि wsimport भोजनालयों होता है।

<execution> 
    <goals> 
     <goal>wsimport</goal> 
    </goals> 
    <configuration> 
     <wsdlFiles> 
      <wsdlFile>path/to/file.wsdl</wsdlFile> 
     </wsdlFiles> 
     <wsdlLocation>http://path/to/webservice?wsdl</wsdlLocation> 
     <staleFile>path/to/file.stale</staleFile> 
     <target>2.1</target> 
    </configuration> 
    <id>wsimport-generate-WebServiceName</id> 
    <phase>generate-sources</phase> 
</execution> 

आशा है कि यह मदद करता है जो कोई भी:

मैं संपादन परियोजना pom.xml और प्रत्येक आयातित wsdl के विन्यास के लिए एक <target>2.1</target> टैग जोड़ने, इस तरह से सही ढंग से वेब सेवा सूत्रों उत्पन्न करने में सक्षम था यह मुद्दा है।

+0

3 के बाद, इस समाधान था। उपरोक्त में से कोई भी काम नहीं किया। – UltraMaster

+1

यह मेरे लिए भी काम किया। मेरे मामले में यह जावा 7 के साथ एक मशीन थी और दूसरा जावा 6 के साथ भ्रम में जोड़ रहा था। – Jim

+2

और मुझे फिर से मदद की! हां, इंटरनेट अब मेरी याददाश्त है। – Jim

5

मुझे लगता है कि आप जावा 6 पर चल रहे अपनी समस्या के आधार पर मानते हैं? चूंकि जावा 6 में जेएक्स-डब्ल्यूएस का पुराना संस्करण शामिल है, इसलिए आपको उन शामिल एपीआई को ओवरराइड करना होगा यदि आप जावा 6 पर जेएक्स-डब्ल्यूएस 2.2 उत्पन्न करना, संकलित करना और चलाने के लिए चाहते हैं। जैसा कि टेक्स किलर ऊपर उल्लेखित है, आप बस उत्पन्न करने के लिए wsimport बता सकते हैं जेएक्स-डब्ल्यूएस 2.1 ऑब्जेक्ट्स और सबकुछ ठीक काम करना चाहिए (मान लीजिए कि आपको जावा 6 जेआरई में से एक मिला है जिसमें जेएक्स-डब्ल्यूएस 2.1 शामिल है, और 2.0 नहीं)।

<build> 
    <plugins> 
     <!-- Generate client using WSDL --> 
     <plugin> 
      <groupId>org.jvnet.jax-ws-commons</groupId> 
      <artifactId>jaxws-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>wsimport</goal> 
        </goals> 
        <configuration> 
         <target>2.2</target> 
         <verbose>true</verbose> 
         <wsdlUrls> 
          <wsdlUrl>http://localhost:8080/axis2/services/HelloWorld?wsdl</wsdlUrl> 
         </wsdlUrls> 
         <packageName>my.package.name</packageName> 
        </configuration> 
       </execution> 
      </executions> 


      <!-- if you want to use a specific version of JAX-WS, you can do so like 
       this --> 
      <dependencies> 
       <dependency> 
        <groupId>com.sun.xml.ws</groupId> 
        <artifactId>jaxws-tools</artifactId> 
        <version>2.2.7</version> 
        <exclusions> 
         <exclusion> 
          <groupId>org.jvnet.staxex</groupId> 
          <artifactId>stax-ex</artifactId> 
         </exclusion> 
        </exclusions> 
       </dependency> 
       <dependency> 
        <groupId>org.jvnet.staxex</groupId> 
        <artifactId>stax-ex</artifactId> 
        <version>1.7</version> 
        <exclusions> 
         <exclusion> 
          <groupId>javax.xml.stream</groupId> 
          <artifactId>stax-api</artifactId> 
         </exclusion> 
        </exclusions> 
       </dependency> 
      </dependencies> 
     </plugin> 

     <!-- Don't forget to use endorsed with JAX-WS 2.2 on Java 6 !! --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.3</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${project.build.directory}/endorsed</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax.xml.bind</groupId> 
           <artifactId>jaxb-api</artifactId> 
           <version>2.2.4</version> 
           <type>jar</type> 
          </artifactItem> 
          <artifactItem> 
           <groupId>javax.xml.ws</groupId> 
           <artifactId>jaxws-api</artifactId> 
           <version>2.2.8</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArguments> 
        <endorseddirs>${project.build.directory}/endorsed</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

तीन परिवर्तन किए गए हैं: आप विशेष रूप से 2.2 के लिए जनरेट करना चाहते हैं, हालांकि, मैं (मैं सिर्फ निर्माण संक्षिप्तता के लिए तत्व शामिल किया है) के बाद करने के लिए अपने पोम सेट करके ऐसा करने में सक्षम था मुझे लगता है कि इसे काम करने के लिए आपको अपने पीओएम में बनाना होगा। मैं तीनों से यहां आया: http://jax-ws-commons.java.net/jaxws-maven-plugin/usage.html। सबसे पहले, आपको ऊपर की तरह jaxws प्लगइन के लिए अतिरिक्त निर्भरताओं को जोड़ने की आवश्यकता हो सकती है। यह भी ध्यान रखें कि आपको मेवेन-कंपाइलर-प्लगइन को अपूर्ण करना होगा, लेकिन ऐसा प्रतीत होता है कि आपके पास अनुमोदित निर्देशिकाएं ठीक से सेट की गई हैं। तीसरा, आपको मेवेन-निर्भरता-प्लगइन के लिए परिभाषा को जोड़ना होगा। आपको अपनी आवश्यकताओं के अनुरूप जेएक्सबी और जेएक्स-डब्ल्यूएस एपीआई संस्करणों को संशोधित करने की आवश्यकता हो सकती है।

इन के अलावा, मैं तो JRE कि < जावा-घर > के तहत (वही पोम में परिभाषित) JAXB और JAX-WS एपीआई के लिए जार रखने द्वारा समर्थन libs साथ Maven लॉन्च कर रहा था को अद्यतन करने के लिए किया था/lib/समर्थन किया। अंत में, सुनिश्चित करें कि मेवेन बिल्ड जेआरई द्वारा लॉन्च किया जा रहा है जिसे आपने अभी अपडेट किया है। यदि यह अभी भी काम नहीं कर रहा है, तो अपने मैवेन बिल्ड के लिए एक्लिप्स रन कॉन्फ़िगरेशन देखें, और सुनिश्चित करें कि यह अनुमोदित libs के साथ जेआरई का उपयोग कर रहा है। (मेरे मामले में रन कॉन्फ़िगरेशन प्रोजेक्ट कॉन्फ़िगरेशन की तुलना में एक अलग जेआरई का उपयोग कर रहा था - मैंने प्रोजेक्ट जेआरई को अपडेट किया था, लेकिन रन कॉन्फ़िगरेशन द्वारा उपयोग नहीं किया गया था, और मुझे यह पता लगाने के लिए एक दिन लग गया कि यह अभी भी क्यों नहीं था काम कर रहे)।

यह आपके लिए चाल करना चाहिए।यदि आप इसके बारे में थोड़ी अधिक समझदार बनना चाहते हैं, तो आप संभवतः बाहरी अनुमोदित libs को संदर्भित करने के लिए रन कॉन्फ़िगरेशन को अपडेट कर सकते हैं, यदि आप अपनी जेआरई स्थापना को संशोधित नहीं करना चाहते हैं।

चियर्स

संबंधित मुद्दे