powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / загрузка класса и вызов его методов
7 сообщений из 7, страница 1 из 1
загрузка класса и вызов его методов
    #33753013
Фотография Sv219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
необходимо загрузить класс и вызвать его метод

чтобы все ето проделать делаю следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
 final  String className = "test.XReportData";
 Class  newClass =  null ;
newClass =  Class .forName(className); // загрузил сам класс
Method method = newClass.getMethod("getReportName",  new   Class [ 0 ]); // полчаю нужный мне метод
Object o = method.invoke( null ,  null ); // вызываю метод 
System.out.println("value: " + o); // вывод результата
все замечательно работает, НО только если вызываемый метод статичный (в данном случае getReportName )

для того чтобы вызвать не статичный метод я так понимаю нужно вызвать метод newInstance() который на выходе дает Object а как у него вызвать нужный мне метод???? или Как можно вызвать не статичный метод???
...
Рейтинг: 0 / 0
загрузка класса и вызов его методов
    #33753047
Sv219необходимо загрузить класс и вызвать его метод

чтобы все ето проделать делаю следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
 final  String className = "test.XReportData";
 Class  newClass =  null ;
newClass =  Class .forName(className); // загрузил сам класс
Method method = newClass.getMethod("getReportName",  new   Class [ 0 ]); // полчаю нужный мне метод
Object o = method.invoke( null ,  null ); // вызываю метод 
System.out.println("value: " + o); // вывод результата
все замечательно работает, НО только если вызываемый метод статичный (в данном случае getReportName )

для того чтобы вызвать не статичный метод я так понимаю нужно вызвать метод newInstance() который на выходе дает Object а как у него вызвать нужный мне метод???? или Как можно вызвать не статичный метод???
В общем, мыслите верно.
Код: plaintext
1.
2.
Object instance = newClass.newInstance();
method.invoke(instance,  null ); // вызываю метод 
...
Рейтинг: 0 / 0
загрузка класса и вызов его методов
    #33753067
Фотография Sv219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
загрузка класса и вызов его методов
    #33753843
Фотография Sv219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуция сейчас такая, из локального приложения загружаю класс вызываю нужный метод и все работает на отлично, если то же самое проделываю из веб приложения то вылетает ексепшн
Код: plaintext
java.lang.reflect.InvocationTargetException
как мне кажется оно вылетает иза того что могут быть не подключены некоторые jar-ники, но проверил подключил все что необходимо... изза чего еще может вылетать такой ексепшн???

добавлю что он вылетает при вызове метода invoke

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        
ClassLoader loader3 = URLClassLoader.newInstance( new  URL[] {  new  File(jarPath).toURL() });
         Class  newClass3 =  Class .forName(classImpl, true, loader3);
        mav.addObject("newClass", newClass3.toString());
        Method method3 = newClass3.getMethod("getProjects",  new   Class [ 0 ]);
        mav.addObject("method", method3.toString());
        Object instance3 = newClass3.newInstance();
         try  {
            Vector col = (Vector)method3.invoke(instance3,  null ); // вызываю метод
            mav.addObject("col", col);
        }  catch  (Exception e) {
            System.out.println("Exception " + e.toString());
        }
...
Рейтинг: 0 / 0
загрузка класса и вызов его методов
    #33753944
Фотография Sv219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитал ex.getCause()
это выдало следующее:
java.lang.NoClassDefFoundError: org/ras/scmstat/client/ServiceAccess

ServiceAccess — это класс через который я осуществляю доступ к ыеб службе, он у меня входит в то самое веб приложение в которм я загружаю класс... почему он его не видит?? и как его можно подключить...
...
Рейтинг: 0 / 0
загрузка класса и вызов его методов
    #33754228
Фотография Sv219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sv219почитал ex.getCause()
это выдало следующее:
java.lang.NoClassDefFoundError: org/ras/scmstat/client/ServiceAccess

ServiceAccess — это класс через который я осуществляю доступ к ыеб службе, он у меня входит в то самое веб приложение в которм я загружаю класс... почему он его не видит?? и как его можно подключить...

разобрался, как мне подсказали надо было сделать еще вот ето: В URLClassLoader.newInstance надо было передать родительский загручик вторым аргументом. Хотя бы this.getClass().getClassLoader()
...
Рейтинг: 0 / 0
загрузка класса и вызов его методов
    #33762873
PWP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PWP
Гость
Ненавижу регистрацию[quot Sv219]необходимо загрузить класс и вызвать его метод ][/quot Sv219]

В общем, мыслите верно.
Код: plaintext
1.
2.
Object instance = newClass.newInstance();
method.invoke(instance,  null ); // вызываю метод 


1) А как быть в случае если конструктор этого класса с параметрами ?
2) И нет пока полной уверенности, что при всем притом не получишь:
NoClassDefFoundError
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / загрузка класса и вызов его методов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]