当前位置: 首页 > 知识库问答 >
问题:

Maven Jaxb2插件抛出错误"未定义的元素声明's:模式'"

裴良弼
2023-03-14

我正在尝试使用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" />

下面是我正在使用的插件配置:

<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,并且我不想通过上述更改将其存储在本地。

共有1个答案

杜昆琦
2023-03-14

您的架构似乎无效。因此,除非修复错误,否则XJC不会编译它。

作为一种解决方案,您可以创建模式的本地副本并修复该副本。您可以创建一个目录文件,该文件将重写全局URL超文本传输协议://某些IP/dummywsdl.asmx?wsdl到您的本地dummywsdl.asmx_wsdl':

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

有关详细信息,请参见使用目录。

 类似资料:
  • 我没有正确安装吗?我忽略了什么?

  • 我正在用C写这个链表程序 我测试程序时发现了错误 linkedlist。cpp:5:24:错误:隐式声明的“constexpr LinkedList::LinkedList()”LinkedList::LinkedList()的定义{ 这是密码 Linkedlist. h文件: linkedlist。cpp文件: 请帮忙。

  • 问题内容: 我看了一些有关主干js的视频。这是直接来自视频的示例。是从2012年开始的,所以我认为主干规则/库已经更改,但是我不知道为什么这暂时不起作用。在视频中,该人演示了它在JS小提琴中运行的过程,但我无法使其正常工作。(我在JS Fiddle中包括了必要的库,即下划线,主干和jQuery) 问题答案: 您曾经能够一口气解析并填写Underscore模板,如下所示: 但是从Underscore

  • 我使用Visual StudioXML工具创建了XSD。我使用下面的C#代码来验证XML并面对这个错误。 错误 元素没有声明为“http://www.w3.org/2000/09/XMLDSIG#:Signature”。 所以我的问题是如何修复它,因为在编辑模式下,XML是100%有效的? 谢谢你! XSD 更新#1 我试过不同的方法,但都不开心。 即使我用这种方法也不快乐。

  • 当我使用PDDocument和PDFTextStripper方法时,尽管导入了所有必需的库,但我还是收到了错误。

  • 我想循环存储过程的结果。我的代码: 我不明白为什么这是抛出必须声明c_curs的错误: 从命令-开始中的第7行开始时出错 结束<错误报告- ORA-06550:第2行,第24列: PLS-00201:必须声明标识符C_CURS