У меня есть файл конфигурации, из которого я хочу прочитать имя представления, а затем визуализировать представление. Я пытаюсь использовать java-отражение для этого, и код выглядит примерно так:
Class viewClass = Play.current().classloader().loadClass(viewName);
Method render = viewClass.getDeclaredMethod("render");
page = (Html)render.invoke(viewClass.newInstance());
Я получаю Java.lang.ClassNotFoundException. viewName - это имя представления.
Вы не указали, как вы получили имя класса, поэтому я представляю полный пример в этом случае для индексного представления.
String viewName = "views.html.index"
Class viewClass = Play.current().classloader().loadClass(viewName);
Method render = viewClass.getDeclaredMethod("render");
Html page = (Html) render.invoke(null);
Еще одна проблема, которую вы не можете назвать методом newInstance() для класса представления. К счастью, вам не нужен экземпляр класса, так как метод render() можно назвать статическим. Просто передайте значение null методу invoke().
viewName
(то есть значение)?