自2013年以来,我一直在努力解决这个问题...... 我使用的是Windows 7。
[错误]无法执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java(generate-sources) on project service-data-model-provider:执行生成源 目标org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java失败:失败 生成类型。 A:\杂项\ WsMock \服务的数据模型提供商的\ src \主\ java的\架构\ EO \ COMMON \ SYSTEM \的MessageHeader \ V1 \ MessageContextType.java (访问被拒绝) - > [帮助1]
它完全随机,适用于所有cxf版本和不同的java版本。 目前我在jdk 1.8.45和cxf 3.1.2
上可以通过设置
来解决问题但是构建总是成功的,即使是会发生一些错误,在日志中显示为[警告]。所以我不能使用类似的东西。
这是我的cfg
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java</sourceRoot>
<defaultOptions>
<extraargs>
<extraarg>-validate</extraarg>
<extraarg>-exsh</extraarg>
<extraarg>true</extraarg>
</extraargs>
</defaultOptions>
<wsdlRoot>..\..\..</wsdlRoot>
<includes>
<include>mds/apps/services/**/*.wsdl</include>
</includes>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
另一件有用但却无法完全解决问题的方法是禁用WindowsHardDrive驱动程序中的WriteToCache设置。
这表明系统太慢,并且CXF \ Java在完全写入磁盘之前尝试使用该文件。 使用SSD时,问题只会偶尔发生。
我们的数据模型非常庞大(许多XSD&#39; s)并且硬盘驱动器已加密,这就是为什么一切都这么慢。
任何想法如何调整java来处理这个?或者它可能是一个CXF问题?
完整堆栈跟踪
[错误]无法执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java(generate-sources) on project service-data-model-provider:执行生成源 目标org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java失败:Fai领导 生成类型。 A:\杂项\ WsMock \服务的数据模型提供商的\ src \主\ java的\共同\架构\ COMMON \故障\肌酐 onfault \ v1 \ ObjectFactory.java(访问被拒绝) - &gt; [帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:失败 执行目标org.apache.cxf:cxf-codegen-plugin:3.1.2:w sdl2java 项目服务 - 数据模型提供者的(generate-sources):执行 生成目标org.apache.cx的源代码 f:cxf-codegen-plugin:3.1.2:wsdl2java失败:无法生成类型。 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 在org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder。 Java的:51) 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 在org.apache.maven.cli.MavenCli.execute(MavenCli.java:862) 在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286) 在org.apache.maven.cli.MavenCli.main(MavenCli.java:197) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:497) 在org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 在org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 引起:org.apache.maven.plugin.PluginExecutionException:执行 生成目标org.apache.cxf:cxf-codeg en-plugin:3.1.2:wsdl2java失败:无法生成类型。 在org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 20更多引起:org.apache.cxf.tools.common.ToolException:无法生成类型。 在org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:839) at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:730) 在org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:270) 在org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164) 在org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:415) 在org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103) 在org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113) 在org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86) 在org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.generate(WSDL2JavaMojo.java:415) 在org.apache.cxf.maven_plugin.AbstractCodegenMoho.execute(AbstractCodegenMoho.java:260) 在org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:512) 在org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) ... 21更多引起:java.io.FileNotFoundException:a:\ Misc \ WsMock \ service-data-model-provider \ src \ main \ java \ uk \ co \ schema \ common \ fault \ creationfault \ v1 \ ObjectFactory.java(访问被拒绝) at java.io.FileOutputStream.open0(Native Method) 在java.io.FileOutputStream.open(FileOutputStream.java:270) 在java.io.FileOutputStream。(FileOutputStream.java:213) 在java.io.FileOutputStream。(FileOutputStream.java:162) at org.sonatype.plexus.build.incremental.DefaultBuildContext.newFileOutputStream(DefaultBuildContext.java:54) 在org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo $ 1.createOutputStream(WSDL2JavaMojo.java:411) at org.apache.cxf.tools.wsdlto.databinding.jaxb.TypesCodeWriter.openBinary(TypesCodeWriter.java:72) 在com.sun.codemodel.CodeWriter.openSource(CodeWriter.java:100) 在com.sun.codemodel.JPackage.createJavaSourceFileWriter(JPackage.java:490) 在com.sun.codemodel.JPackage.build(JPackage.java:441) 在com.sun.codemodel.JCodeModel.build(JCodeModel.java:311) 在com.sun.codemodel.JCodeModel.build(JCodeModel.java:301) 在org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:827) ... 32更多[错误] [错误]使用-X开关重新运行Maven以启用完整的调试日志记录。 [错误] [错误]有关详细信息 关于错误和可能的解决方案,请阅读以下内容 文章:[错误] [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
干杯 PREM
答案 0 :(得分:0)
我也发生了同样的事情。
我也有jdk 1.8和cxf 3.1.x
我在一台旧电脑上用jdk 1.7和cxf 2.7.0尝试了相同的任务,它就像魅力一样。
添加&lt;插件&gt;每次创建构建时都会从wsdl生成模式和服务..我不知道它是否是一种有效的方式,但我提取了模式和服务一次并将它们添加到根目录。
感谢
答案 1 :(得分:0)
当我的wsdl文件出现问题时,我也遇到了类似的问题。请检查wsdl文件和所有丢失的文件路径。
答案 2 :(得分:0)
(将@Prem的评论移至该答案并添加更多详细信息)
添加<fork>always</fork>
可解决此问题。
示例配置:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-source</id>
<phase>generate-sources</phase>
<configuration>
<fork>always</fork>
</configuration>
...
<!-- Rest of the configuration -->