嗨,我正在尝试从主类中读取文件作为参数,并在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应该能够初始化)甚至私人构造函数)。 DemorestApplication
和UsersResources
类是否在同一程序包中?否则,代码不应编译,因为UsersResources(String value)
在包的外部不可见。但是在这种情况下,错误有所不同:The constructor xxx is undefined
,因此可能并非如此。