[英]Spring Boot - Could not find a suitable constructor error
嗨,我正在嘗試從主類中讀取文件作為參數,並在Spring Boot中訪問另一個類中的參數。 主類看起來像這樣
public class DemorestApplication extends SpringBootServletInitializer {
public static void main(String[] args) throws IOException {
new DemorestApplication().configure(new SpringApplicationBuilder(DemorestApplication.class)).run(args);
new UsersResources(args[0]);
}
}
我將參數傳遞給另一個名為UsersResources構造函數的類
@Path("/sample")
public class UsersResources {
private String value;
UsersResources(String value){
this.value=value;
}
//new code
@GET
@Path("Data/file/{path}")
@Produces("application/json")
public Map<String, Map<String, List<Map<String, Map<String, String>>>>> getApplicationName1(@PathParam("path") String path) throws IOException {
ReadExceldy prop = new ReadExceldy();
FileInputStream Fs = new FileInputStream(System.getProperty("user.dir")+"\\"+value);
Properties properties = new Properties();
properties.load(Fs);
String Loc=properties.getProperty("filepath");
String Na=path;
String filename=Loc+Na;
return prop.fileToJson(filename);
}
}
我正在嘗試運行此代碼,但它拋出一個錯誤,說
java.lang.NoSuchMethodException:在org.glassfish.jersey.internal.inject.JerseyClassAnalyzer.getConstructor(JerseyClassAnalyzer.java:192)〜[jersey-common-2.25.1。com.springsampleapplication.UsersResources類中找不到合適的構造函數。 jar:na]
可能是Spring嘗試初始化UsersResources
類並期望僅使用String
參數的構造函數不帶參數的問題。 嘗試添加這樣的構造函數: public UsersResources() {}
想到的另一種想法是,這可能是由於UsersResources
構造函數沒有可見性修飾符(這意味着它受到程序包保護),您可以嘗試向其添加public
可見性修飾符(盡管Spring甚至可以初始化私有構造函數) 。 但是, DemorestApplication
和UsersResources
類是否在同一程序包中? 否則,代碼將無法編譯,因為在包的外部看UsersResources(String value)
。但是在這種情況下,錯誤有些不同: The constructor xxx is undefined
,所以可能不是這種情況。
由於您似乎正在使用Jersey,因此需要一個public
構造函數:
根資源類由JAX-RS運行時實例化,並且必須具有一個公共構造函數,JAX-RS運行時可以為其提供所有參數值。 請注意,根據該規則,零參數構造函數是允許的。
由於您已經在類中定義了構造函數,因此不會生成默認構造函數。 解決方法是使用@Component等使此類成為Spring組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.