Pre*_*rem 6 java cxf wsdl2java
自 2013 年以来,我一直在努力解决这个问题……我使用的是 Windows 7。
[错误] 无法在项目 service-data-model-provider 上执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java (generate-sources):执行目标 org.apache.cxf 的生成源:cxf-codegen-plugin:3.1.2:wsdl2java failed: 无法生成类型。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
该问题可以通过设置始终解决
但是构建总是成功的,即使会发生一些错误,在日志中显示为 [警告] .. 所以我不能使用类似的东西。
这是我的配置文件
<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>
Run Code Online (Sandbox Code Playgroud)
另一件有帮助但不能完全解决问题的方法是禁用 WindowsHardDrive 驱动程序中的 WriteToCache 设置。
这表明系统太慢,CXF\Java 试图在文件完全写入磁盘之前使用它。使用 SSD 问题只是偶尔发生。
我们的数据模型是巨大的(很多 XSD)并且硬盘是加密的,所以这就是为什么一切都那么慢的原因。
任何想法如何调整java来处理这个问题?或者可能是 CXF 问题?
全栈跟踪
[错误] 无法在项目 service-data-model-provider 上执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java (generate-sources):执行目标 org.apache.cxf 的生成源:cxf-codegen-plugin:3.1.2:wsdl2java failed: Fai 导致生成类型。a:\Misc\WsMock\service-data-model-provider\src\main\java\co\schema\common\fault\creati onfault\v1\ObjectFactory.java(访问被拒绝)-> [Help 1] org. apache.maven.lifecycle.LifecycleExecutionException:无法执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:w sdl2java (generate-sources) on project service-data-model-provider: Execution generate-sources of目标 org.apache.cx f:cxf-codegen-plugin:3.1.2:wsdl2java 失败:无法生成类型。在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224) 在 org.apache。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 更多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: openSource(CodeWriter.java:100) at com.sun.codemodel.JPackage.createJavaSourceFileWriter(JPackage.java:490) at com.sun.codemodel.JPackage.build(JPackage.java:441) at 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 以启用完整的调试日志记录。[ERROR] [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1] 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 以启用完整的调试日志记录。[ERROR] [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1] 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 以启用完整的调试日志记录。[ERROR] [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
干杯Prem
我也发生了同样的事情。
我也有 jdk 1.8 和 cxf 3.1.x
我在一台旧 PC 上用 jdk 1.7 和 cxf 2.7.0 尝试了相同的任务,它的工作就像魅力一样。
添加 <plugin> 将生成模式每次创建构建时都会从 wsdl 获取服务。我不知道这是否是一种有效的方法,但我提取了一次架构和服务并将它们添加到根目录中。
谢谢