「2 つのクラスが同じ XML タイプ名を持っています...」のような JAXB 例外を取得し、
例外の詳細は次のとおりです。
スレッド「メイン」での例外 com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 カウントの IllegalAnnotationExceptions 2 つのクラスが同じ XML タイプ名「city」を持っています。@XmlType.name および @XmlType.namespaceを使用して、それらに異なる名前を割り当てます。この問題は、次の場所に関連しています: public com.model.City の com.model.City com.model.Address の com.model.Address.getCurrentCity() この問題は、次の場所に関連しています: com.common .City at public com.common.City com.model.Address.getPreviousCity() at com.model.Address
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check (不明なソース) で com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet (不明なソース) で com.sun .xml.internal.bind.v2.runtime.JAXBContextImpl.(不明なソース) com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(不明なソース) com.sun.xml.internal. bind.v2.ContextFactory.createContext(未知のソース) com.sun.xml.internal.bind.v2.ContextFactory.createContext(未知のソース) at sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) at sun.reflect.NativeMethodAccessorImpl. javax.xml.bind.ContextFinder の java.lang.reflect.Method.invoke(不明なソース) で、sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) での invoke(不明なソース)。javax.xml.bind.ContextFinder.find(不明なソース) の newInstance(不明なソース) javax.xml.bind.JAXBContext.newInstance(不明なソース) の javax.xml.bind.JAXBContext.newInstance(不明なソース) com. PojoToXSD.main(PojoToXSD.java:17)
私は次のような例を取りました:
package **com.model**; ---->this package contains 'Address' class and 'City' class
public class Address {
private String areaName;
private City currentCity;
private com.common.City previousCity;
}
package com.model;
public class City {
private String cityName;
}
「com.common」パッケージの別の都市クラス。
package **com.common**;
public class City {
private String pinCode;
}
XSD を作成する必要があり、プロジェクト内の既存のコード (上記のコード例のように) を使用してマーシャリングとアンマーシャリングを行う必要があります。コードには「@XmlRootElement/@XmlType」などの注釈がなく、ソースコード。
上記の問題を修正する解決策や、XSD を作成してマーシャリング/アンマーシャリング (MOXy など) を行う他の方法はありますか?
誰からでも解決策を得ることができれば素晴らしいと思います....よろしくお願いします。
ありがとう、
サティア。