Я попробовал пример hello world из здесь , и я не вижу никакого вывода в моей программе (в консоли при использовании команды "java").Я что-то не так делаю?Код функции маршала выглядит следующим образом:
public void marshal() {
try {
JAXBElement<GreetingListType> gl =
of.createGreetings( grList );
JAXBContext jc = JAXBContext.newInstance( "hello" );
Marshaller m = jc.createMarshaller();
m.marshal( gl, System.out );
} catch( JAXBException jbe ){
// ...
}
}
Я также пытался поместить вывод в файл, подобный этому:
public void marshal() {
try {
JAXBElement<GreetingListType> gl =
of.createGreetings( grList );
JAXBContext jc = JAXBContext.newInstance( "hello" );
FileOutputStream fos = new FileOutputStream("plik.xml");
Marshaller m = jc.createMarshaller();
//m.marshal( gl, System.out );
m.marshal(gl, fos);
fos.close();
} catch( JAXBException jbe ){
// ...
}
catch( IOException ioe ){
// ...
}
}
, но это не сработало.У вас есть какие-нибудь решения?
РЕДАКТИРОВАТЬ: После печати Stack Trace он дал мне это, выглядит многообещающе:
javax.xml.bind.JAXBException: "hello" doesnt contain ObjectFactory.class or jaxb.index
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:186)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:148)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:310)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:392)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:357)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:264)
at Hello.marshal(Hello.java:28)
at Hello.main(Hello.java:43)
У меня есть ObjectFactory, но я ничего не знаю о jaxb.index.Это необходимо?Как это должно выглядеть?