gpt4 book ai didi

java - 如何在 JAXB 中获取输出(编码(marshal)处理)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:21 25 4
gpt4 key购买 nike

我尝试了来自 here 的 hello world 示例而且我在我的程序中看不到任何输出(使用“java”命令时在控制台中)。我做错了什么吗? marshal 函数的代码如下所示:

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.in​​dex 一无所知。有必要吗?它应该是什么样子?

最佳答案

我遇到了同样的问题。原来你需要改变这一行:

JAXBContext jc = JAXBContext.newInstance( "hello" );

但放置生成文件的实际完整包:

JAXBContext jc = JAXBContext.newInstance( "my.generated.package.etc" ); // or whatever.

关于java - 如何在 JAXB 中获取输出(编码(marshal)处理)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6682959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com