Java 在运行时加载类时无法创建bean
我有两个不同的项目。第一个用于类加载,第二个有自己的类,用于执行一些处理工作 在第一个项目中,我加载该类,而不是创建新实例来调用该方法,我只使用应用程序上下文Java 在运行时加载类时无法创建bean,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我有两个不同的项目。第一个用于类加载,第二个有自己的类,用于执行一些处理工作 在第一个项目中,我加载该类,而不是创建新实例来调用该方法,我只使用应用程序上下文 @Autowired ApplicationContext context; ClassLoader loader = null; try { loader = URLClassLoader.newInstance(new URL[]{new File(plugins + "/" + pluginName + "/"
@Autowired
ApplicationContext context;
ClassLoader loader = null;
try {
loader = URLClassLoader.newInstance(new URL[]{new
File(plugins + "/" + pluginName + "/" + pluginName +
".jar").toURI().toURL()}, getClass().getClassLoader());
} catch (MalformedURLException e) {
e.printStackTrace();
}
Class<?> clazz = null;
try {
clazz = Class.forName("com.sample.Specific", true, loader);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method method = null;
try {
method = clazz.getMethod("run",new Class[]{});
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
method.invoke(context.getBean(clazz),new Object[]{});
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
正如我提到的,这是两个不同的项目。所以当我用Main类运行第一个项目时,它说--
考虑在应用程序中定义“com.sample.Specific”类型的bean
配置
如何创建bean?这是因为您无法在组件扫描配置中找到此类,您需要声明bean所在的包。事实上,我是在运行时加载此类的,我只在那里立即声明包。你能告诉我一些点或代码来声明我的bean所在的包吗。因此,我不知道如何在运行时创建bean,谢谢您的合作。这里实际的问题是:你能告诉我在上下文参数标记之间的web.xml中声明了什么吗?如果没有这些标记,那么检查appname-servlet.xml如果有如果答案是否定的,我想你有像appConfig这样的类,用@Configuration@ComponentScan(“Here.you.package”)注释,如果答案为“否”,请发布您的应用程序结构文件夹以及配置和类,以帮助您感谢您的回复。实际上我有一个spring boot项目。我不维护这些文件。
package com.sample
@Service
public class Specific {
@Autowired
private FD fd;
public void run(){
fd.init();
}
}