所以我试着想了一段时间。我有一个带有JAXB注释的Java类:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Book {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}然后,我可以运行schemagen,如下所示:
schemagen -d d:\Temp Book.java并生成XML:schema1.xsd。返回码是0( windows (echo %ERRORLEVEL%)和linux (echo $?)都试过了。
现在我需要向这个类添加一些Jackson注释,所以我添加了一个JSON属性:
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonProperty;
@XmlRootElement
public class Book {
@JsonProperty("title")
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}不幸的是,现在当我运行schemagen时,它似乎成功了(生成了schema文件),但返回代码是1(在Linux和Windows上都是如此),这对我来说是有问题的,因为它会导致gmake失败。
遗憾的是,schemagen没有输出任何错误消息。但我怀疑它找不到jackson jars,所以我将jackson-annotation jar (带有jackson-core和jackson-databind的依赖项)复制到公共D:\Temp位置并运行schemagen,如下所示:
schemagen -cp d:\Temp -d d:\Temp Book.java不幸的是,如果我这样运行它,结果是一样的:
schemagen -cp d:\Temp\* -d d:\Temp Book.java我还将在控制台上输出单个null (JAXB人员在这里非常强调冗长),并返回代码-1。
如何使用Jackson注解成功运行schemagen (返回码0)?有什么建议吗?
发布于 2016-02-12 09:24:31
好的,在一个朋友的帮助下,我知道实际的命令应该是什么样子:
schemagen -cp D:\Temp\jackson-annotations-2.5.4.jar -d D:\Temp Book.java
事实证明我们只需要指定jackson注解jar,而不是依赖的jar。此外,这在这个简化的场景中并不明显,但是如果您在Linux上的类路径(-cp参数)上传递多个源,那么这些源需要用冒号分隔,而不是分号。基本上,这就是让我如履薄冰的问题。
https://stackoverflow.com/questions/35329377
复制相似问题