Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Рефлексия! Ошибка вызова методов с аргументами кастомного типа! / 7 сообщений из 7, страница 1 из 1
03.08.2012, 15:02:33
    #37903582
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рефлексия! Ошибка вызова методов с аргументами кастомного типа!
Добрый день!
Я через рефлексию подключаю к своему приложению библиотеку.
Вызываю конструктор класса этой библиотеки в который нужно передать аргумент. И если бы у этого конструктора типы аргументов были стандартные (int, String и т.п. ) то все бы получалось, но у меня тип аргумента в конструкторе - это свой самописный класс например MyClass. Этот класс я изгочально загнал в третию библиотеку и подключаю ее к проекту приложения и к модулю, т.е. простыми словами этот класс как посредник, средство для упаковки моих данных и отправки библиотеке.
При запуске в консоле исключение Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
В C# т.к. все классы унаследованны от object, то там можно любой обьект привести к object, передать куда угодно и там его прикастить обратно, а в Java я так полагаю нет. Возможно необходимо имплементировать какой нить интерфейс или еще что нибудь.
Не знаю!
...
Рейтинг: 0 / 0
03.08.2012, 15:10:03
    #37903594
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рефлексия! Ошибка вызова методов с аргументами кастомного типа!
Нужно грузить одним класслоадером
...
Рейтинг: 0 / 0
03.08.2012, 15:10:16
    #37903596
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рефлексия! Ошибка вызова методов с аргументами кастомного типа!
stacktrace и код в студию.
...
Рейтинг: 0 / 0
03.08.2012, 15:32:13
    #37903631
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рефлексия! Ошибка вызова методов с аргументами кастомного типа!
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: TestPkg.AppsDefinition cannot be cast to Core.KAProvider
    at Core.MainForm.appsTree_MouseClicked(MainForm.java:305)
    at Core.MainForm$1.mouseClicked(MainForm.java:53)
    at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)



Главное приложение:
Код: java
1.
2.
3.
4.
Class c = this.pluginManager.Read(apps.get(sel.toString())); //Тут в методе Read работает Classloader. Срабатывает
Constructor constructor = c.getConstructor(); //Срабатывает
Object obj = constructor.newInstance(); //Срабатывает
KAProvider man = (KAProvider)obj; // Кастим к интерфейсу. Не срабатывает



А вот подгружаемый модуль:
Все методы в классе имплементированны с интерфейса KAProvider, конструктор т.понимаю не обязательно описывать.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public class AppsDefinition implements KAProvider{
 
    private TestlFrame tf;
    private LinkManager linkManager;
 
    public void Start(Object src, LinkManager lm)
    {
        this.linkManager = lm;
        this.tf = new TestlFrame(this);
        ((JDesktopPane) src).add(this.tf);
        this.tf.setVisible(true);
 
    }
 
    public Connection GetConnection() {
        return this.linkManager.GetConnection();
    }
 
    public int GetOEBSUserID() {
        return this.linkManager.GetOEBSUserID();
    }
 
    public int GetUserID() {
        return this.linkManager.GetUserID();
    }
 
    public boolean GetAuthState() {
        return this.linkManager.GetAuthState();
    }
}


Ну и сам интерфейс, который лежит в отдельной библиотеке и подключет и к приложению и к модулю:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
import java.sql.Connection;
 
public interface KAProvider {
 
    public void Start(Object src, LinkManager lm);
 
    public Connection GetConnection();
 
    public int GetOEBSUserID();
 
    public int GetUserID();
 
    public boolean GetAuthState();
}
...
Рейтинг: 0 / 0
03.08.2012, 15:34:36
    #37903638
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рефлексия! Ошибка вызова методов с аргументами кастомного типа!
Не всё так просто в разработке плагинов в Java:
12933486
...
Рейтинг: 0 / 0
03.08.2012, 16:18:09
    #37903718
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рефлексия! Ошибка вызова методов с аргументами кастомного типа!
Blazkowicz,

что скажете по поводу сериализации класса и его данных и последующей передаче для десериализации в пункте назначения?
...
Рейтинг: 0 / 0
03.08.2012, 16:36:03
    #37903752
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рефлексия! Ошибка вызова методов с аргументами кастомного типа!
уТКа,
Вот хочу попробывать это
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Рефлексия! Ошибка вызова методов с аргументами кастомного типа! / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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