別のパッケージの列挙型を参照する 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 つのソース ファイルからスキーマを生成しています [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) [スキーマゲン] 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.
文字列に切り替えるとエラーが発生するため、列挙型がエラーの原因であることはわかっています。列挙型が同じ名前空間または異なる名前空間にある上記の例でスキーマを生成するにはどうすればよいですか?