当前位置: 首页 > 知识库问答 >
问题:

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

公冶昆杰
2023-03-14

所以我试着弄清楚了一段时间。我有一个带有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模式:< code>schema1.xsd。返回代码是0(尝试了windows(< code > echo % error level % )和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;
    }
}

不幸的是,现在当我运行模式时,它似乎成功了(生成了模式文件),但返回代码是1(在Linux和Windows上),这对我来说是个问题,因为它会导致gmake失败。

遗憾的是,Schemagen没有输出任何错误消息。但我怀疑它找不到jackson jar,所以我将jackson-noteation jar(依赖jackson-core和jackson-data ind)复制到常见的D:\Temp位置并运行Schemagen,如下所示:

schemagen -cp d:\Temp -d d:\Temp Book.java

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

schemagen -cp d:\Temp\* -d d:\Temp Book.java

我还将得到控制台上输出的单个null(JAXB人员在这里确实强调了冗长性)并返回-1的代码。

如何使用杰克逊注释成功运行模式(返回代码0)?有什么建议吗?

共有1个答案

房唯
2023-03-14

好的,在朋友的帮助下,我知道实际命令应该是什么样子的:

< code > schema gen-CP D:\ Temp \ Jackson-annotations-2 . 5 . 4 . jar-D D:\ Temp book . Java

原来我们只需要指定jackson annotations jar,而不需要指定依赖jar。在这个简化的场景中,这一点也不明显,但是如果您在Linux上的classpath (-cp参数)中传递多个源,那么这些源需要用冒号而不是分号分隔。基本上,这就是让我徒劳无功的问题。

 类似资料:
  • 问题内容: 我有一个班级,想与一个池中的子进程以只读方式共享,所以我准备了一个班级的代理,但是没有用。以下是我的问题的简化示例。 当我运行此代码时,我得到: 看来我无法直接通过代理访问共享库的属性。是使用获取属性的方法的唯一方法,还是我做错了什么? 问题答案: 通常,由其使用的对象及其子类仅公开其引用的对象中的 方法 ,而不公开属性。现在,这里提供,它提供了一个子类,该子类 确实 提供对属性而不是

  • 问题内容: 我正在解析json数据。我的解析没有问题,我正在使用模块。但是某些api请求返回空值。这是我的示例: 这是我解析json对象的代码段: 正如我提到的一些请求,我得到以下错误: 处理此错误的最佳方法是什么? 问题答案: Python编程中有一条规则叫做“求宽容比求许可要容易”(简而言之:EAFP)。这意味着您应该捕获异常,而不是检查值的有效性。 因此,请尝试以下操作: 编辑 :由于实际上

  • 我正试图将华为广告套件集成到我的应用程序中,但它总是返回给我错误代码1,并且无法显示任何广告。我希望这些错误能更好地解释。

  • 我创建了一个C#ASP.NETCore6.0应用程序,并尝试使用Sustainsys使用Azure AD实现SSO。Saml2,特别是Sustainsys.Saml2.AspNetCore2软件包。在使用localhost在我的开发机器上测试了该实现之后,我可以看到它按预期工作,并对用户进行身份验证,填充身份模型,并重定向到正确的URL。 然而,当使用停靠版本部署到测试环境中时,行为会发生变化。触

  • 我正在尝试返回一个对象,它应该是IClass的一个实现,具有一个通用类型,是IType的一个实现。 我要返回的实际类扩展了Class (abstract ),其泛型类型为ActualType: 抽象类对象实现了IClass接口,可以有任何扩展IType的类型 ActualType只是实现了IType接口 我在编译时得到一个“类型不匹配:无法从ActualClass转换为IClass”错误。我不明白

  • 我已经在我的Win 10上安装了XAMPP 7.2.10,Apache和MySQL等其他服务运行良好。但是Tomcat服务没有启动,并且会抛出一个错误:“Tomcat Started/Stopded with error,返回代码:1,确保您安装了JavaJDK或JRE,并且所需的端口是免费的,检查“/xampp/tomcat/logs”文件夹以获取更多信息”XAMPP Tomcat错误图像 我在