嗨,我正在尝试从主类中读取文件作为参数,并在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:在com.springsampleapplication.UsersResources类中找不到合适的构造函数
  在org.glassfish.jersey.internal.inject.JerseyClassAnalyzer.getConstructor(JerseyClassAnalyzer.java:192)〜[jersey-common-2.25.1.jar:na]

最佳答案

当您仅使用UsersResources参数时,Spring可能试图初始化String类并期望没有参数的构造函数,这可能是问题所在。尝试添加这样的构造函数:public UsersResources() {}

想到的另一种想法是,这可能是由于UsersResources构造函数没有可见性修饰符(这意味着它受程序包保护),您可以尝试向其中添加public可见性修饰符(尽管Spring应该能够初始化)甚至私人构造函数)。 DemorestApplicationUsersResources类是否在同一程序包中?否则,代码不应编译,因为UsersResources(String value)在包的外部不可见。但是在这种情况下,错误有所不同:The constructor xxx is undefined,因此可能并非如此。

10-05 17:51