【发布时间】:2015-11-30 15:31:07
【问题描述】:
自 2013 年以来,我一直在努力解决此问题... 我使用的是 Windows 7。
[ERROR] 未能执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java (generate-sources) 关于项目 service-data-model-provider:Execution generate-sources of 目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java 失败:失败 生成类型。 a:\Misc\WsMock\service-data-model-provider\src\main\java\schema\eo\common\system\messageheader\v1\MessageContextType.java (访问被拒绝)-> [帮助 1]
它是完全随机的,发生在所有 cxf 版本和不同的 java 版本上。 目前我在 jdk 1.8.45 和 cxf 3.1.2
设置always可以解决这个问题
但是构建总是成功的,即使会发生一些错误,在日志中显示为 [Warning]。所以我不能使用类似的东西。
这是我的配置文件
<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),而且硬盘驱动器是加密的,所以一切都那么慢。
任何想法如何调整 java 来处理这个问题?或者可能是 CXF 问题?
全栈跟踪
[ERROR] 未能执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java (generate-sources) 关于项目 service-data-model-provider:Execution generate-sources of 目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java 失败:Fai led 生成类型。 a:\Misc\WsMock\service-data-model-provider\src\main\java\co\schema\common\fault\creati onfault\v1\ObjectFactory.java(访问被拒绝)-> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 失败 执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:w sdl2java 项目服务数据模型提供者上的(生成源):执行 生成目标 org.apache.cx 的来源 f:cxf-codegen-plugin:3.1.2:wsdl2java failed: 无法生成类型。 在 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. 爪哇: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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 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: Execution 目标 org.apache.cxf:cxf-codeg 的生成源 en-plugin:3.1.2:wsdl2java failed: 无法生成类型。 在 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) 在 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(访问被拒绝) 在 java.io.FileOutputStream.open0(本机方法) 在 java.io.FileOutputStream.open(FileOutputStream.java:270) 在 java.io.FileOutputStream.(FileOutputStream.java:213) 在 java.io.FileOutputStream.(FileOutputStream.java:162) 在 org.sonatype.plexus.build.incremental.DefaultBuildContext.newFileOutputStream(DefaultBuildContext.java:54) 在 org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo$1.createOutputStream(WSDL2JavaMojo.java:411) 在 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
干杯 前言
【问题讨论】:
-
禁用写入缓存是一个非常好的技巧。谢谢!