如何从引用不同包中的枚举的 JAXB 对象生成模式?
下面是一个例子:
枚举类
package com.example.one
public enum EnumExample {
VALUE_ONE
VALUE_TWO
}
JAXB 类
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;
}
}
包信息.java
@javax.xml.bind.annotation.XmlSchema(namespace = "http://example.com", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.example.two;
蚂蚁目标
<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>
当我运行上面的示例时,我得到以下信息:
[schemagen] 异常的package-info.java 路径:package-info.java [schemagen] 从7个源文件生成schema [schemagen] 注解处理时遇到的问题;[schemagen] 请参阅下面的堆栈跟踪以获取更多信息。[schemagen] java.lang.NullPointerException [schemagen] at com.sun.tools.jxc.model.nav.APTNavigator$2.onDeclaredType(APTNavigator.java:428) [schemagen] at com.sun.tools.jxc.model.nav .APTNavigator$2.onClassType(APTNavigator.java:402) [schemagen] 在 com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:456) [schemagen] 在 com.sun.istack.tools .APTTypeVisitor.apply(APTTypeVisitor.java:27) [schemagen] 在 com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:109) [schemagen] 在 com.sun.tools.jxc.model .nav.APTNavigator.getBaseClass(APTNavigator.
我知道是枚举导致了错误,因为如果我切换到字符串,它就会消失。如何使用上面的示例生成模式,其中枚举位于相同的命名空间或不同的命名空间中?