Я разрабатываю программу для обозначения алгоритмов, представленных группой студентов; каждый студент будет представлять свои собственные .java-файлы.Динамическое создание и использование классов в папке
Я хотел бы поместить все эти файлы (чьи имена я не знаю) в папку. Моя программа затем создаст экземпляр каждого из этих классов, добавит их в список массивов, чтобы я мог вызвать основной метод каждого класса и пометить вывод.
Мне сказали использовать пружинную рамку (см. Ниже); однако я все еще не могу получить доступ к основному методу. Вот ошибка:
error: cannot find symbol
cls.main();
^
symbol: method main()
location: variable cls of type Class
1 error
Есть что-то, что я пропустил? Любая помощь будет принята с благодарностью.
public class TeamMakerTester{
public static void main(String[] args){
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
provider.addIncludeFilter(new AssignableTypeFilter(Team.class));
// scan in org.example.package
Set<BeanDefinition> components = provider.findCandidateComponents("org/mysteryhobo/algorithms");
for (BeanDefinition component : components)
{
try{
Class cls = Class.forName(component.getBeanClassName());
cls.main(); //here
} catch (ClassNotFoundException cnfe){
System.out.println("Error: Class not found");
}
}
}
решаемые Эрвин Bolwidt:
public class TeamMakerTester{
public static void main(String[] args){
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
provider.addIncludeFilter(new AssignableTypeFilter(Team.class));
// scan in org.example.package
Set<BeanDefinition> components = provider.findCandidateComponents("org/mysteryhobo/algorithms");
for (BeanDefinition component : components){
try{
Class<?> cls = Class.forName(component.getBeanClassName());
//cls.main();
Method m = cls.getMethod("main", String[].class);
String[] params = {}; // Insert any arguments that you want to pass
m.invoke(null, (Object) params);
}catch (ClassNotFoundException cnfe){
System.out.println("Error: Class not found");
}catch(NoSuchMethodException me){
System.out.println("Error: Method does not exist");
}catch (IllegalAccessException iae){
System.out.println("Error: Denied access to method");
}catch (InvocationTargetException ite){
System.out.println("Error: Invalid target method");
}
}
System.out.println("Test");
}
}
Вы, сэр, джентльмен и ученый. – mysteryhobo