在运行时加载类时无法创建bean

我有两个项目的工作方式不同。 第一个用于类加载,第二个用于进行一些处理工作。

在第一个项目中,我正在加载类,而不是创建用于调用方法的新实例,我只使用应用程序上下文。

@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(); } 

在第二个项目中我有这个例子:

 package com.sample @Service public class Specific { @Autowired private FD fd; public void run(){ fd.init(); } } 

正如我所提到的,这是两个不同的项目。 所以当我用Main类运行第一个项目时,它会说 –

考虑在配置中定义类型为“com.sample.Specific”的bean。

我该如何创建bean?

这是因为您无法找到此类,您需要在组件扫描配置中声明bean所在的包。