自 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 上执行目标 …