首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB schemagen在处理具有Jackson属性的类时返回1作为错误代码

JAXB schemagen在处理具有Jackson属性的类时返回1作为错误代码
EN

Stack Overflow用户
提问于 2016-02-11 09:45:30
回答 1查看 828关注 0票数 0

所以我试着想了一段时间。我有一个带有JAXB注释的Java类:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
schemagen -d d:\Temp Book.java

并生成XML:schema1.xsd。返回码是0( windows (echo %ERRORLEVEL%)和linux (echo $?)都试过了。

现在我需要向这个类添加一些Jackson注释,所以我添加了一个JSON属性:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
schemagen -cp d:\Temp -d d:\Temp Book.java

不幸的是,如果我这样运行它,结果是一样的:

代码语言:javascript
复制
schemagen -cp d:\Temp\* -d d:\Temp Book.java

我还将在控制台上输出单个null (JAXB人员在这里非常强调冗长),并返回代码-1。

如何使用Jackson注解成功运行schemagen (返回码0)?有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 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参数)上传递多个源,那么这些源需要用冒号分隔,而不是分号。基本上,这就是让我如履薄冰的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35329377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档