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

java.lang.NoSuchMethodError:在类中添加构造函数后

龙凯
2023-03-14

有没有人可以帮助我理解为什么在向一个接受两个参数的类添加了一个新的构造函数之后,项目编译了,但是我的测试现在不能创建这个类的新实例?

我有一个例外:

java.lang.nosuchmethoderror:pidac.workflow.testclass。(lcom/pidac/infrastructure/core/service/crudservice;lcom/pidac/infrastructure/core/service/auditservice;)V

在pidac.workflow.sometests.ShouldAuditCompletedIdentityRequestImsAgainstConnectedSources(someclass.Java:115)在sun.reflect.nativeMethodAccessorImpl.Invoke0(原生方法)在sun.reflect.nativeMethodAccessorImpl.Invoke(nativeMethodAccessorImpl.Java:62)在sun.reflect.delegatingmethodAccessorInvoke(nativeMethodAccessorInvoke:43)在Junit4ClassRunner.Runchild(BlockJunit4ClassRunner.:57)在org.junit.runners.ParentRunner.3.运行(ParentRunner.Java:290)在org.junit.runners.ParentRunner.1.调度(ParentRunner.Java:71)在org.junit.runners.ParentRunner.Runchilds(ParentRunner.Java:288)在org.junit.runners.ParentRunner.Access在org.junit.runners.ParentRunner.Access在

我正在使用IntelliJ 2018 Professional。

更多信息12月29日:我已经删除了这个项目的maven本地快照并重新构建。

当我调试测试时,我可以看到类有这个新的构造函数。但是,调试器正在执行的内容和我在IntelliJ中看到的内容之间显然存在不匹配。

共有2个答案

卞安邦
2023-03-14

当使用2个参数声明类时,类将丢失它的默认构造函数(没有参数)。您正在编写的测试可能需要一个默认的构造函数来获得一个实例。

构建另一个显式的无参数构造函数,或者如果您使用的是优秀的Lombok库,则使用@noargsconstructor注释类以使测试工作。或者,更改测试以在构造函数中使用2个属性初始化类。

正如Nicholas所提到的,您的代码示例将有所帮助。

默认构造函数在这里的另一个SO问题中解释:Java默认构造函数

方宜
2023-03-14

我不得不手动删除当前在[module]/out/production/类中配置的gradle输出文件夹。

我的项目为输出配置了这个文件夹,所以当我查看编译后的类时,新的变化并没有反映出来。所以我想这个编译的类没有被更新,只是删除了他们。

重新组装了项目,我的测试现在可以看到更改了,即使我在上面的位置没有看到编译的类....

 类似资料:
  • C++ 类 & 对象 类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地理解构造函数的概念:#include <iostream> using namespace std; class Line { public: v

  • “Bericht”对象的单独类文件的一部分(荷兰语表示消息,包含一个字符串和两个日期): 在我的主方法的某个地方,我从这个类中创建新对象: 方法“printberichten”迭代数组列表并打印所有消息 getBericht getter方法: 因此,如果我创建一个新对象,我之前的所有对象都应该显示在text Area中,但我似乎只创建了我的类的一个实例。 在命令“lijst.add(this)”

  • 说明: Worker::__construct([string $listen , array $context]) 初始化一个Worker容器实例,可以设置容器的一些属性和回调接口,完成特定功能。 参数 $listen 如果有设置监听$listen参数,则会执行socket监听。 $listen的格式为 <协议>://<监听地址> <协议> 可以为以下格式: tcp: 例如 tcp://0.0.

  • 我可以在Jpanel构造函数中使用add(new Jlabel())在我的Jpanel上创建label,但是一旦我使用其他函数调用add(),label就不会显示在面板上。我做错了什么?

  • 我正在做一项关于使用结构化/半结构化/非结构化数据的作业,我正在对莎士比亚的戏剧进行字数统计(以了解语言如何随时间变化),方法是导入每部戏剧的txt文件和xml索引文件,该文件存储有关每部戏剧的关键信息,如编写年份、角色列表等。。然后,我将删除字符名、设置、标点符号和常用词(和、但、或,如果等…)从txt文件准备好进行字数统计-全部在C#中运行的控制台脚本中。我正在编写一个类,每个剧本的数据都将存

  • 问题内容: 到目前为止,我在构造函数中有一个类 的功能是在数据库中查找特定的电子邮件地址。当我将标识符设置为某些电子邮件时,我确定它不在数据库中;第一个IF被传递,并转到第一个ELSE。这里的构造函数应该返回FALSE; 但是,它返回具有所有NULL值的类的对象! 我如何防止这种情况?谢谢 编辑: 谢谢大家的回答。那太快了!我看到OOP方式是抛出异常。因此,抛出一个问题,我的问题发生了变化,我应该