2015-09-04 57 views
2

我竭力要解决这个问题,因为2013 ... 我使用Windows 7的Apache CXF WSDL2JAVA无法生成类型 - >访问被拒绝

[错误]未能执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java(生成源) 关于项目服务数据模型提供者:执行生成源 目标org.apache.cxf:cxf-codegen-插件:3.1.2:wsdl2java失败:失败 生成类型。 a:\ Misc \ WsMock \ service-data-model-provider \ src \ main \ java \ schema \ eo \ common \ system \ messageheader \ v1 \ MessageContextType.java (Access is denied) - > [Help 1]

它是完全随机的,发生在所有的cxf版本和不同的java版本上。 目前我在JDK 45年8月1日和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),而且硬盘被加密,这就是为什么一切都如此缓慢。

任何想法如何调整java来处理这个?或者也许它是一个CXF问题?

完整堆栈跟踪

[错误]未能执行目标 org.apache.cxf:CXF-CODEGEN-插件:3.1.2:WSDL2Java的(产生来源) 项目服务的数据 - model-provider:执行生成源 目标org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java失败:辉导致 生成类型。 a:\ Misc \ WsMock \ service-data-model-provider \ src \ main \ java \ co \ schema \ common \ fault \ creati onfault \ v1 \ ObjectFactory.java(Access is denied) - > [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException:无法执行 执行目标org.apache.cxf:cxf-codegen-plugin:3.1.2:w sdl2java (生成源)项目service-data-model-provider:执行 generate-sources of goal 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) 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:862) at org.apache.maven.cli.MavenCli .doMain(MavenCli.java:286) at org.apache.maven.cli.MavenCli.main(MavenCli.java:197) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang中.reflect.Method.invoke(Method.java:497) 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 ) 引起:org.apache.maven.plugin.PluginExecutionException:执行 生成源目标org.apache.cxf:cxf-codeg en-plugin:3.1.2:wsdl2java失败:无法生成类型。 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 20 more引起: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) at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:164) at org.apache.cxf。 tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:415) at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103) at org.apache.cxf.tools.wsdlto。 WSDLToJava.run(WSDLToJava.java:113) at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86) at org.apache.cx f.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。执行(WSDL2JavaMojo.java:512) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) ... 21 more引起:java.io.FileNotFoundException:a:\ Misc \ WsMock \ (本地方法) (位于本地方法)服务数据模型提供程序\ src \ main \ java \ uk \ co \ schema \ common \ fault \ creationfault \ v1 \ ObjectFactory.java(访问被拒绝) (FileOutputStream.java:270) at java.io.FileOutputStream。(FileOutputStream.java:213)(java.io.FileOutputStream)(FileOutputStream.java:213) at java.io.FileOutputStream。(FileOutputStream.java:162) at org.sonatype.plexus.build.incremental.DefaultBuildContext.newFileOutputStream(DefaultBuildContext.java:54) at 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) at com.sun.codemodel.CodeWriter.openSource(CodeWriter.java:100) at com.sun.codemodel.JPackage.createJavaSourceFileWriter(JPackage.java:490) at com.sun.codemodel.JPackage。在com.sun.codemodel.JCodeModel.build(JCodeModel.java:301) at org.apache上构建(JPackage.java:441) at com.sun.codemodel.JCodeModel.build(JCodeModel.java:311) 。 cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.generate(JAXBDataBinding.java:827) ... 32更多[错误] [错误]使用-X开关重新运行Maven以启用完整的调试日志记录。 [错误] [错误]有关错误和可能的解决方案的更多信息 ,请阅读以下 文章:[错误] [说明1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

干杯 炳廷

+0

禁用写入缓存是一个非常好的提示。谢谢! – chillworld

回答

0

同样的事与我..
我也曾经有过的JDK 1.8和CXF 3.1.X
我试过同一任务的旧电脑上使用JDK 1.7和CXF 2.7.0和它的工作般的魅力..
添加< PL ugin>会在每次创建构建时从wsdl生成模式和服务。我不知道它是否是一种有效的方式,但我抽取了一次模式和服务并将它们添加到根。
谢谢

+0

我们不会选择我,因为每次构建项目时都必须重新生成模式。 – Prem

+0

@Prem你应该尝试使用Java 7个人电脑...阅读这个官方CXF网站的第一个FAQ .. http://cxf.apache.org/faq.html#FAQ-CanCXFrunwithJDK1.8/Java8? – Yadvendra

+0

我试过了,我也一样。 使用快速ssd或使用cxf启用fork =总是一切正常。但这对我来说不是一种选择,我仍然在寻找这背后的真正问题。 干杯 – Prem