Подробности: я пытаюсь использовать инфраструктуру Jalapeno для соединения моего приложения RCP с базой данных Cache. После того, как соединение установлено, я пытаюсь получить все данные из таблицы точно так же, как в руководстве по Jalapeno:
if (objManager==null) return;
DBClass cortege = null;
try {
Iterator terms = objManager.openByQuery(DBClass.class, null, null);
System.out.println("terms ok");
while (terms.hasNext()){
System.out.println("has next");
cortege = (DBClass)terms.next();
}
исключение при компиляции, запуске и создании кода
java.lang.RuntimeException: myPluginId.views.DBClass
at com.intersys.objects.POJOIterator.next(POJOIterator.java:75)
...skip...
Caused by: java.lang.ClassNotFoundException: myPlugin.views.DBClass
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.core.runtime.internal.adaptor.ContextFinder.loadClass(ContextFinder.java:129)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.jalapeno.runtime.ObjectCopierToPojo.detach(ObjectCopierToPojo.java:76)
at com.jalapeno.runtime.ObjectCopierToPojo.findPojo(ObjectCopierToPojo.java:472)
at com.intersys.classes.CacheRootObject.detach(CacheRootObject.java:255)
at com.intersys.classes.Persistent.detach(Persistent.java:567)
at com.intersys.objects.POJOIterator.next(POJOIterator.java:59)
at term.next ();
Я вообще не могу его получить ... экземпляр класса DBClass только что создан, но класс не может быть загружен.
Затем я попытался поместить этот код в простое Java-приложение (не eclipse rcp), и все прошло нормально. , поэтому я думаю, что часть Eclipse блокирует загрузку классов.
также я пытался загрузить класс перед вызовом term.next ();
Bundle b = Platform.getBundle("myPluginId");
try {
b.loadClass("DBClass");
} catch (ClassNotFoundException e) {
System.out.println("no class");
e.printStackTrace();
}
... и получил ту же ошибку. Класс не может быть загружен.
Итак, это известная проблема? Есть ли решение?
Обновление
После некоторых исследований обновляется вопрос:
Как заставить плагин Jalapeno загружать класс из моего плагина?