Подробности: я пытаюсь использовать структуру 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)
в терминах.следующий();
Я вообще не могу это понять... экземпляр класса DBClass был только что создан, но класс не может быть загружен. затем я попытался поместить этот код в простое Java-приложение (не eclipse rcp), и все прошло нормально, поэтому я думаю, что какая-то часть Eclipse блокирует загрузку класса.
также я пытался загрузить класс перед вызовом terms.next();
Bundle b = Platform.getBundle("myPluginId");
try {
b.loadClass("DBClass");
} catch (ClassNotFoundException e) {
System.out.println("no class");
e.printStackTrace();
}
... и получил ту же ошибку. Класс не может быть загружен. Так это известная проблема? Есть ли решение?
Обновлять
После некоторых исследований, обновляющих вопрос:
Как заставить плагин Jalapeno загружать класс из моего плагина?