我需要在不使用xjc命令或ant的情况下从.xsd生成bean类。我在Apache Axis2中找到了实现,但我无法生成工件。
我编写了以下代码,但是我得到了NullPointerException:
SchemaCompiler sc = XJC.createSchemaCompiler();
URL url = new URL("file://E:\\JAXB\\books.xsd");
sc.parseSchema(new InputSource(url.toExternalForm()));
S2JJAXBModel model = sc.bind();
JCodeModel cm = model.generateCode(null, null);
cm.build(new FileCodeWriter(new File("E:\\JAXBTest")));
任何人都可以帮助我/提供一些链接???
答案 0 :(得分:1)
虽然我还没有尝试过Axis2的XJC,但是我尝试了Sun的并且我很确定你的架构的URL是错误的:你需要三个斜杠(因为“权限”部分被遗漏了,因为它是一个本地资源,有一个绝对路径)
或者,甚至更简单,构造一个File并在其上调用toURI(),如下所示:
SchemaCompiler sc = XJC.createSchemaCompiler();
File file = new File("D:\\my-dir\\my-schema.xsd");
sc.setErrorListener(... );
sc.parseSchema(new InputSource(file.toURI().toString()));
S2JJAXBModel model = sc.bind();
JCodeModel cm = model.generateCode(null, null);
cm.build(new File("."));
这为我生成了所需的文件。你需要在类路径上使用tools.jar。快乐的代码生成!
答案 1 :(得分:0)
SchemaCompiler sc = XJC.createSchemaCompiler();
File file = null;
file = new File("Item.xsd");
sc.parseSchema(new InputSource(file.toURI().toString()));
S2JJAXBModel model = sc.bind();
JCodeModel cm = model.generateCode(null, null);
cm.build(new File("."));
//我在本地目录中有Item.xsd,这段代码生成了类。如果我在本地删除此xsd将获得空指针异常。 还要注意我在eclipse项目的Java Build路径中有我的jaxb相关jar。