2016-11-05 2 views
1

maven jaxb2 플러그인을 사용하여 클래스를 생성하려고합니다. 그러나 나는 아래의 예외를 수신하고 있습니다 : 검색 한 후Maven Jaxb2 플러그인 스로 인 오류 "정의되지 않은 요소 선언의 : 스키마 '"

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) 

를, 내가 WSDL 2 아래의 선언은 문제의 원인이되는 것을 알고 나니 포스트 중 하나에서

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

을 나는 것을 발견하면 다음은

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

내가 사용하고있는 플러그인 구성입니다 : 나는 그 어떤 문제없이 파일을 생성하는 플러그인의 아래 라인 위의 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를 참조하십시오.