No default constructor found; nested exception is java.lang.NoSuchMethodException with Spring MVC?
Solution 1
You must have to define no-args or default constructor if you are creating your own constructor.
You can read why default or no argument constructor is required.
why-default-or-no-argument-constructor-java-class.html
Solution 2
Spring cannot instantiate your TestController because its only constructor requires a parameter. You can add a no-arg constructor or you add @Autowired annotation to the constructor:
@Autowired
public TestController(KeeperClient testClient) {
TestController.testClient = testClient;
}
In this case, you are explicitly telling Spring to search the application context for a KeeperClient bean and inject it when instantiating the TestControlller.
Solution 3
In my case, spring threw this because i forgot to make an inner class static.
When you found that it doesnt help even adding a no-arg constructor, please check your modifier.
Solution 4
In my case I forgot to add @RequestBody
annotation to the method argument:
public TestController(@RequestBody KeeperClient testClient) {
TestController.testClient = testClient;
}
john
Updated on July 07, 2020Comments
-
john almost 4 years
I am working with Spring MVC controller project. Below is my Controller and I have a constructor declared which I am specifically using for testing purpose.
@Controller public class TestController { private static KeeperClient testClient = null; static { // some code here } /** * Added specifically for unit testing purpose. * * @param testClient */ public TestController(KeeperClient testClient) { TestController.testClient = testClient; } // some method here }
Whenever I am starting the server, I am getting below exception -
No default constructor found; nested exception is java.lang.NoSuchMethodException:
But if I remove
TestController
constructor then it works fine without any problem. What wrong I am doing here?But if I add this default constructor then it starts working fine -
public TestController() { }