apache cxf wsdl2java Не удалось сгенерировать типы-›Отказано в доступе

Я пытаюсь решить эту проблему с 2013 года... Я использую Windows 7.

[ОШИБКА] Не удалось выполнить цель org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java (сгенерировать-источники) для поставщика модели-данных-данных проекта: выполнение генерации-источников цели 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>

Еще одна вещь, которая помогает, но не решает проблему полностью, — это отключение параметра WriteToCache в драйвере WindowsHardDrive.

Это указывает на то, что система слишком медленная и CXF\Java пытается использовать файл до того, как он будет полностью записан на диск. При использовании SSD проблема возникает лишь изредка.

Наша модель данных огромна (много XSD), а жесткие диски зашифрованы, поэтому все так медленно.

Любые идеи, как настроить java, чтобы справиться с этим? Или, может быть, это проблема CXF?

Полная трассировка стека

Привет Прем

(Перемещение комментария @Prem к этому ответу и добавление более подробной информации)


person Prem    schedule 04.09.2015    source источник
comment
Для меня это не вариант, так как мне приходится регенерировать схемы каждый раз, когда я создаю проект.   -  person chillworld    schedule 05.10.2017


Ответы (3)


Добавление <fork>always</fork> устраняет проблему.

Примеры конфигураций:

Документы — maven-cxf-codegen - другая конфигурация

     <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 -->

То же самое произошло и со мной..
У меня тоже были jdk 1.8 и cxf 3.1.x
Я попробовал ту же задачу на старом ПК с jdk 1.7 и cxf 2.7.0, и это сработало как шарм..
> Добавление плагина ‹ > будет генерировать схему и службу из wsdl каждый раз, когда вы создаете сборку. Я не знаю, эффективный это способ или нет, но я один раз извлек схему и службу и добавил их в корень.
Спасибо

person Smile    schedule 06.07.2020

Я столкнулся с подобной проблемой, когда у меня возникла проблема с моим файлом wsdl. Пожалуйста, проверьте файл wsdl и путь к отсутствующему файлу.

person Yadvendra    schedule 04.09.2015
comment
@Prem Вы должны попробовать на ПК с Java 7 ... Прочитайте первый FAQ на этом официальном веб-сайте CXF .. cxf.apache.org/faq.html#FAQ-CanCXFrunwithJDK1.8/Java8? - person Prem; 07.09.2015
comment
Я пробовал, и я получаю то же самое. Использование быстрого ssd или использование cxf с включенным форком = всегда все работает нормально. Но это не вариант для меня, и я все еще ищу реальную проблему, стоящую за этим. Ваше здоровье - person Yadvendra; 07.09.2015
comment
[ОШИБКА] Не удалось выполнить цель org.apache.cxf:cxf-codegen-plugin:3.1.2:wsdl2java (сгенерировать-источники) для поставщика модели-данных-данных проекта: выполнение генерации-источников цели org.apache.cxf :cxf-codegen-plugin:3.1.2:wsdl2java не удалось: Fai привел к созданию типов. 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. 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.M avenCli.execute(MavenCli.java:862) на org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286) на org.apache.maven.cli.MavenCli.main(MavenCli.java:197) на солнце .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) по адресу 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 failed: не удалось сгенерировать типы. at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145) at 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.WSDL 2JavaMojo.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 [ОШИБКА] [ОШИБКА] Перезапустите Maven, используя переключатель -X, чтобы включить полное ведение журнала отладки. [ОШИБКА] [ОШИБКА] Дополнительные сведения об ошибках и возможных решениях см. в следующих статьях: [ОШИБКА] [Справка 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException - person Prem; 08.09.2015

Отключить запись в кеш — очень хороший совет. Спасибо!

person naqib83    schedule 04.03.2019