Цель: попытка передать любой класс через параметр c
, чтобы любой класс мог использовать маршалинг напрямую.Класс отливки при сортировке JAXB
Ошибка: [com.sun.istack.internal.SAXException2: неспособны маршалинга типа «java.lang.Class» в качестве элемента, потому что он пропускает @XmlRootElement аннотацию]
была дана Эта ошибка на линии указал стрелкой (->)
Комментарии: если я пытаюсь изменить c
на линии 8 & 9 с выражением из фактического класса, то это работает просто отлично. Есть ли способ, не делая этого. Я считаю, что классное литье не является вариантом.
public XmlMarshaller(Class c){
try {
JAXBContext jaxbContext = JAXBContext.newInstance(c);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
--> marshaller.marshal(c, new File("xmlDyna/asd.xml"));
--> marshaller.marshal(c, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
Это другой класс, в случае, если кто думает, что ошибка с недостающим @XmlRootElement аннотациями.
@XmlRootElement(name = "Dynamic")
public class DynamicLoader {
@XmlElement(name = "name")
public String name = "asdasd";
public DynamicLoader(){
XmlMarshaller marshaller = new XmlMarshaller(this.getClass());
}
public String getName(){
return name;
}
Почему вы хотите маршалировать java.lang.Class в xml? –
Я не пытался маршалировать объект lang.Class. Я пытался передать другой объект через (класс c) в качестве параметра. Проблема заключается в строке с (->) вместо c, она должна быть именем класса. Что ты думаешь я должен сделать? – rjbaj