Добрый день, решаю задачку, где нужно зная путь к классу загрузить его в класс Class. Ничего не объяснялось, мол гугли ClassLoader. Ну я нашел самый логичный ответ, загрузить класс через forName. Все в интернете говорят, что должно работать так:
Class clazz = Class.forName("абсолютный путь к файлу");
но даже убедившись на 100% что путь к файлу приходит верный, с помощью проводника Windows, программа всё равно кидает ClassNotFoundException. Полазив я подглядел код у другого ученика, вот такой:
// - не работает Class clazz = Class.forName(file.toString());
MyClassLoader loader = new MyClassLoader();
Class clazz = loader.load(file.toPath());
public class MyClassLoader extends ClassLoader {
public Class<?> load(Path path) {
try {
byte[] b = Files.readAllBytes(path);
return defineClass(null, b, 0, b.length);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
И метод казалось бы рабочий, но зачем тогда нужен forName? он не работает! либо работает, но я не понимаю как.