【问题标题】:No default constructor found exception未找到默认构造函数异常
【发布时间】:2017-02-28 00:46:18
【问题描述】:

我正在 java spring 4 框架中开发一个 web 应用程序。在某一时刻,我正在使用由 jersey 提供的 FormDataContentDisposition 类。此类在我的 REST 调用的端点上使用,如下所示,

@RequestMapping(value = "/createArticle/", method = RequestMethod.POST)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public ResponseEntity<Void> createNewArticle(@FormDataParam("file") InputStream uploadedInputStream,
                                             @FormDataParam("file") FormDataContentDisposition fileDetails)

当我进行 REST 调用时,Apache Tomcat 给出了一个异常说, “无法实例化 [com.sun.jersey.core.header.FormDataContentDisposition]:未找到默认构造函数”

由于 FormDataContentDisposition 没有默认构造函数,我认为这个异常来了,同样根据这篇文章http://javarevisited.blogspot.in/2014/01/why-default-or-no-argument-constructor-java-class.html 应该有一个默认构造函数存在。我无法创建默认构造函数,因为此类(FormDataContentDisposition)位于 jar 文件中。

帮助我克服这个问题

【问题讨论】:

  • 你能显示完整的异常堆栈跟踪吗?
  • 您将 Spring MVC 与 JAX-RS 注释混合在一起,这显然是行不通的。使用 Spring MVC 或 JAX-RS 但混合使用它们是行不通的。
  • @Nibras 你找到答案了吗?

标签: java spring jersey default-constructor


【解决方案1】:

我认为你对问题的原因是正确的。如果没有构造函数的参数,您无法实例化此类的对象,因此您需要在 Spring 4 中弄清楚如何为该类的构造提供参数并这样做。

您参考的文章提供了所有类都应该具有默认构造函数的观点。这不是 Java 中的一种规则。我什至认为它不符合最佳实践。我也不认为这篇文章与您的问题有任何关系。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多