2016-11-05 1 views
1

Я пытаюсь сгенерировать классы с помощью плагина maven jaxb2. Однако я получаю ниже исключение:Ошибка Maven Jaxb2: «undefined element declaration's s: schema»

org.xml.sax.SAXParseException; systemId: http://someIP/dummywsdl.asmx?wsdl; lineNumber: 32; columnNumber: 41; undefined element declaration 's:schema' 
at com.sun.xml.xsom.impl.parser.ParserContext$1.reportError(ParserContext.java:180) 
at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.reportError(NGCCRuntimeEx.java:175) 
at com.sun.xml.xsom.impl.parser.DelayedRef.resolve(DelayedRef.java:110) 
at com.sun.xml.xsom.impl.parser.DelayedRef.run(DelayedRef.java:85) 
at com.sun.xml.xsom.impl.parser.ParserContext.getResult(ParserContext.java:135) 
at com.sun.xml.xsom.parser.XSOMParser.getResult(XSOMParser.java:214) 
at com.sun.tools.xjc.ModelLoader.loadWSDL(ModelLoader.java:412) 
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:170) 
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:119) 
at org.jvnet.mjiip.v_2_2.XJC22Mojo.loadModel(XJC22Mojo.java:50) 
at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:40) 
at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:28) 
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:488) 
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:311) 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
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.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197) 
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:116) 
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 

После поиска, я узнал, что ниже 2 декларации в WSDL вызывает вопрос:

<s:element ref="s:schema"/> 
<s:any/> 

В одном из поста, я обнаружил, что если Я изменить вышеуказанные 2 линии с ниже данной линии, то плагин генерирует файлы без каких-либо вопроса:

<s:any minOccurs="2" maxOccurs="2" /> 

ниже конфигурация плагин, который я использую:

<plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <version>0.12.3</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <schemaLanguage>WSDL</schemaLanguage> 
       <generatePackage>com.abc</generatePackage> 
       <schemas> 
        <schema> 
         <url>http://someIP/dummywsdl.asmx?wsdl</url> 
        </schema> 
       </schemas> 
      </configuration> 
     </plugin> 

Есть ли другой способ решить эту проблему, не меняя WSDL, так как это клиент WSDL, и я не хочу, чтобы хранить его в моем местном с вышеуказанными изменениями.

ответ

2

Ваша схема кажется недопустимой. Так что нет, XJC не будет компилировать его, если вы не исправите ошибку.

В качестве обходного пути вы можете создать локальную копию вашей схемы и исправить эту копию. Вы можете создать файл каталога, который бы «переписать» глобальный URL http://someIP/dummywsdl.asmx?wsdl`` into your local dummywsdl.asmx_wsdl`:

REWRITE_SYSTEM "http://someIP/dummywsdl.asmx?wsdl" "dummywsdl.asmx_wsdl" 

Смотрите Using catalogs для получения дополнительной информации.

Смежные вопросы