cxf-codegen-plugin生成禁止的包名:java.util.xsd

时间:2014-05-23 05:31:40

标签: java wsdl wsdl2java cxf-codegen-plugin

在eclipse中使用wsdl2java和cxf-codegen-plugin我生成了WSDL文件的客户端代码。但由于SecurityException,我无法运行客户端:禁止包名:java.util.xsd。

任何解决方法?

异常就是这样。

  

线程“main”中的异常java.lang.SecurityException:禁止   包名:java.util.xsd at   java.lang.ClassLoader.preDefineClass(ClassLoader.java:649)at   java.lang.ClassLoader.defineClass(ClassLoader.java:785)at   java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)     在java.net.URLClassLoader.defineClass(URLClassLoader.java:449)at   java.net.URLClassLoader.access $ 100(URLClassLoader.java:71)at   java.net.URLClassLoader $ 1.run(URLClassLoader.java:361)at   java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)at   java.security.AccessController.doPrivileged(Native Method)at   java.net.URLClassLoader.findClass(URLClassLoader.java:354)at   java.lang.ClassLoader.loadClass(ClassLoader.java:423)at   sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:356)at   java.lang.Class.forName0(Native Method)at   java.lang.Class.forName(Class.java:266)at   sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)     在   sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)     在   sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)     在   sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:390)     在   sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:371)     在   sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:673)     在   sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:480)     在   sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:306)     在   sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:241)     在   sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:88)     在   sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:70)     在java.lang.Class.initAnnotationsIfNecessary(Class.java:3098)at   java.lang.Class.getAnnotation(Class.java:3057)at   com.sun.xml.internal.ws.model.RuntimeModeler $ 1.run(RuntimeModeler.java:156)     在   com.sun.xml.internal.ws.model.RuntimeModeler $ 1.run(RuntimeModeler.java:154)     在java.security.AccessController.doPrivileged(Native Method)at   com.sun.xml.internal.ws.model.RuntimeModeler.getPrivClassAnnotation(RuntimeModeler.java:154)     在   com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:190)     在   com.sun.xml.internal.ws.client.WSServiceDelegate.createSEIPortInfo(WSServiceDelegate.java:672)     在   com.sun.xml.internal.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:660)     在   com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:329)     在   com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:312)     在   com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:294)     在javax.xml.ws.Service.getPort(Service.java:119)at   org.wso2.carbon.statistics.services.StatisticsAdmin.getStatisticsAdminHttpsSoap11Endpoint(StatisticsAdmin.java:101)     在   test1.StatisticsAdminLibrary。(StatisticsAdminLibrary.java:41)     在test1.StatisticsAdminLibrary.main(StatisticsAdminLibrary.java:204)

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test1</groupId>
    <artifactId>test1</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <cxf.version>2.2.3</cxf.version>
    </properties>   

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>axiom-api</artifactId>
            <version>1.2.13</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>axiom-impl</artifactId>
            <version>1.2.13</version>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.neethi</groupId>
            <artifactId>neethi</artifactId>
            <version>3.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons.schema</groupId>
            <artifactId>XmlSchema</artifactId>
            <version>1.4.7</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        <dependency>
            <groupId>org.antlr</groupId>
            <artifactId>ST4</artifactId>
            <version>4.0.7</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>2.7.7</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>                         
                            <wsdlRoot>${basedir}/src/main/resources</wsdlRoot>
                            <includes>
                                <include>*.wsdl</include>
                            </includes>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>com.googlecode.robotframework-maven-plugin</groupId>
                <artifactId>robotframework-maven-plugin</artifactId>
                <version>1.1.2</version>

                <configuration>
                    <extraPathDirectories>                      
                    </extraPathDirectories>
                </configuration>

                <executions>
                    <execution>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>

wsdl file

2 个答案:

答案 0 :(得分:1)

同样的事发生在我身上。也许,在导致您遇到麻烦的wsdl上,您可以引用一个或多个名称空间,其名称以字符串&#34; java:...&#34;开头。这些名称空间生成名称以java ....开头的包。

为了修复它,你必须在pom.xml文件的执行/配置/ extraargs元素中放置一个这样的元素,对于每个以&#34开头的命名空间; java:...&#34 ;

<extraarg>-p</extraarg>                                        
<extraarg>java:...=yourpackagename</extraarg> 

答案 1 :(得分:0)

我以为我会分享我的gradle.build解决方案:

buildscript {
ext {
    springBootVersion = '1.5.1.RELEASE'
}
repositories {
    mavenCentral()
    maven {
        url "https://plugins.gradle.org/m2/"
    }
}
dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    classpath("no.nils:wsdl2java:0.10")
  }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: "no.nils.wsdl2java"

// Prevents the boot packager from requiring a main class
bootRepackage {
    bootRepackage.enabled = false
}

jar {
    baseName = 'JAR-NAME'
    version = '1.0.0-SNAPSHOT'
}

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    maven {
        url "https://plugins.gradle.org/m2/"
    }
}

// Generate sources off ccds wsdls
wsdl2java {
    generatedWsdlDir = file("$projectDir/src/generated/java")
    wsdlDir = file("$projectDir/src/main/resources/wsdl")
    stabilizeAndMergeObjectFactory = true
    wsdlsToGenerate = [
        // These foo wsdl files make a reference to util.java and generated classes with package java.util.xsd
        // The first argument to each renames that package to avoid security exceptions

        // foo version
        ['-xjc','-p', 'http://util.java/xsd=com.foo.java.util.xsd','-b', file("$wsdlDir/binding.xml"), file("$wsdlDir/foo/wsdl-catalog.wsdl")],
        ['-xjc','-p', 'http://util.java/xsd=com.foo.java.util.xsd','-b', file("$wsdlDir/binding.xml"), file("$wsdlDir/foo/wsdl-inventory.wsdl")],
        ['-xjc','-p', 'http://util.java/xsd=com.foo.java.util.xsd','-b', file("$wsdlDir/binding.xml"), file("$wsdlDir/foo/wsdl-customer.wsdl")],
        ['-xjc','-p', 'http://util.java/xsd=com.foo.java.util.xsd','-b', file("$wsdlDir/binding.xml"), file("$wsdlDir/foo/wsdl-entity.wsdl")],

        // Does not require renaming
        ['-xjc','-b', file("$wsdlDir/binding.xml"), file("$wsdlDir/foo/wsdl-workflow.wsdl")],

        // bar version
        ['-xjc','-b', file("$wsdlDir/binding.xml"), file("$wsdlDir/bar/wsdl-billing.wsdl")]
    ]
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
}