首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Enum的JAXB SchemaGen在不同的包中

带有Enum的JAXB SchemaGen在不同的包中
EN

Stack Overflow用户
提问于 2012-08-11 03:00:09
回答 1查看 1.3K关注 0票数 3

如何从引用不同包中枚举的JAXB对象生成模式?

以下是一个例子:

Enum类

代码语言:javascript
复制
package com.example.one

public enum EnumExample {
    VALUE_ONE
    VALUE_TWO
}

JAXB级

代码语言:javascript
复制
package com.example.two

public class Example {

private EnumExample enumExample;

    @XMLElement(name="enumExample", required=true)
    public EnumExample getEnumExample() {
        return enumExample
    }

    public void setEnumExample() {
        this.enumExample = enumExample;
    }
}

package-info.java

代码语言:javascript
复制
@javax.xml.bind.annotation.XmlSchema(namespace = "http://example.com", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) 
package com.example.two;

蚂蚁目标

代码语言:javascript
复制
<path id="glassfish.schemagen.classpath">
    <pathelement location="/apps/glassfish/lib/webservices-tools.jar" />
</path>

<taskdef name="schemagen" classname="com.sun.tools.jxc.SchemaGenTask">
    <classpath refid="glassfish.schemagen.classpath" />
</taskdef>

<schemagen srcdir="${src.dir}/com/example/two" destdir="xsd">
    <schema namespace="http://exmaple.com" file="example.xsd" />
</schemagen>

当我运行上面的示例时,我得到以下信息:

源文件异常包-info.java路径:Packe-info.java模式,从7个源文件生成模式--在注释处理过程中遇到的模式问题;有关更多信息,请参见下面的堆栈跟踪。com.sun.tools.jxc.model.nav.APTNavigator$2.onDeclaredType(APTNavigator.java:428)图式组com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:402)图式组com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:456)图式组com.sun.istack.tools.APTTypeVisitor.apply(APTTypeVisitor.java:27)组com.sun.tools组.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:109)图式在com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:85)图式在com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.getIndividualType(PropertyInfoImpl.java:190)图式在com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.(PropertyInfoImpl.java:132)图式在com.sun.xml.bind.v2.model.impl。ERPropertyInfoImpl.(ERPropertyInfoImpl.java:53)图式在com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.(ElementPropertyInfoImpl.java:96)图式在com.sun.xml.bind.v2.model.impl.ClassInfoImpl.createElementProperty(ClassInfoImpl.java:886)图式在com.sun.xml.bind.v2.model.impl.ClassInfoImpl.addProperty(ClassInfoImpl.java:841)模式胶原在com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findGetterSetterProperties(ClassInfoImpl.java:966) com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:298)的图式,com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:243)的模式,com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:209)的模式,com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:315)的com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:330)图式、com.sun.tools.xjc.api.impl.j2s.JavaCompilerImpl.bind(JavaCompilerImpl.java:90)图式、com.sun.tools.jxc.apt.SchemaGenerator$1.process(SchemaGenerator.java:115)图式、com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)图式、com.sun.tools.apt.comp图式com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258)图式、com.sun.tools.apt.main.Main.compile(Main.java:1102)图式、com.sun.tools.apt.main.Main.compile(Main.java:964)模式、com.sun.tools.apt.Main.processing(Main.java:95)模式、com.sun.tools模式。sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法中的apt.Main.process(Main.java:85) com.sun.tools.apt.Main.process模式胶原(Main.java:67).jxc.AptBasedTask$InternalAptAdapter.execute(AptBasedTask.java:97)图式在com.sun.tools.jxc.AptBasedTask.compile(AptBasedTask.java:144)图式在org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:906)图式在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)图式在sun.reflect.GeneratedMethodAccessor4.invoke(Unknown来源)图式在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)java.lang.reflect.Method.invoke(Method.java:597)模式、org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)模式、org.apache.tools.ant.Task.perform(Task.java:348)模式、org.apache.tools.ant.Target.execute(Target.java:390)模式、org.apache.tools.ant.Target.performTasks(Target.java:411)模式.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)图式,org.apache.tools.ant.Project.executeTarget(Project.java:1366)模式,org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)模式,org.apache.tools.ant.Project.executeTargets(Project.java:1249)模式,org.apache.tools.ant.Main.runBuild(Main.java:801)模式,org.apache。org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) ( org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) )的tools.ant.Main.startAnt(Main.java:218)模式

我知道这是枚举导致错误的原因,因为如果我切换到字符串,它就会消失。如何使用上面的示例生成模式,其中枚举位于相同的名称空间或不同的名称空间?

EN

回答 1

Stack Overflow用户

发布于 2012-09-27 00:03:39

示意图支持javac任务定义的大多数属性

您是否尝试过使用包含或排除元素(未经测试)?

代码语言:javascript
复制
<schemagen srcdir="${src.dir}/com/example" destdir="xsd">
    <schema namespace="http://exmaple.com" file="example.xsd" />
    <include name="one/EnumExample.java"/>
    <include name="two/Example.java"/>
</schemagen>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11911542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档