Сценарий: У меня есть классы Java в папке на диске. Я хочу вызвать метод из определенного класса, например Regex. Можно ли использовать API Reflection для вызова метода? У меня есть следующий код:Reflection API - ClassNotFound Exception
File dir = new File("H:/TestFolder/sample");
File[] directoryListing = dir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
File[] dirListing = child.listFiles();
for (File fileName : dirListing) {
if (fileName.getName().equals("Regex.java")) {
Class<?> clazz;
try {
clazz = Class.forName("Regex");
Constructor<?> ctor = clazz.getConstructor();
Object regexClass = ctor.newInstance();
....}
Я получаю ClassNotFoundException. Может ли кто-нибудь сказать мне, что я делаю неправильно?
Прежде всего классы не могут быть загружены из исходных файлов Java, которые он должен быть скомпилирован. Если вы хотите загрузить скомпилированные файлы классов из папки, проверьте [this] (http://stackoverflow.com/questions/6219829/method-to-dynamically-load-java-class-files) –
Я бы проверил это 'Regex. class' находится в вашем классе в пакете по умолчанию. –
@PeterLawrey Sir, вам не кажется, что это имя отсутствует в имени класса Class.forName (..) '? Я упомянул об этом в разделе ответов. Пожалуйста, поправьте меня, если я ошибаюсь. –