Jalapeno 프레임 워크를 사용하여 RCP 앱을 캐시 데이터베이스에 연결하려고합니다. 연결이 설정된 후, 나는 정확히으로 Jalapeno 설명서에 같은 테이블에서 모든 데이터를 얻기 위해 노력하고있어 :Eclipse RCP : ClassNotFoundException 또는 다른 클래스 번들로드하는 방법 클래스
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();
}
이 코드 컴파일을 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)
을 실행하고 trowing(); 전혀 얻을 수 없어요 ... DBClass 클래스의 인스턴스가 방금 생성되었지만 클래스를로드 할 수 없습니다. 그런 다음이 코드를 간단한 Java 응용 프로그램 (이클립스 rcp가 아닌)에 넣으려고했는데 모두 괜찮아졌습니다. 그래서 일부 Eclipse 부분이 클래스 로딩을 차단한다고 생각합니다.
또한 terms.next()를 호출하기 전에 클래스를로드하려고 시도했습니다.
Bundle b = Platform.getBundle("myPluginId");
try {
b.loadClass("DBClass");
} catch (ClassNotFoundException e) {
System.out.println("no class");
e.printStackTrace();
}
같은 오류가 발생했습니다. 클래스를로드 할 수 없습니다. 그래서 알려진 문제입니까? 해결책이 있습니까? =========================== 내 플러그인에서 클래스를로드하기 위해 Jalapeno 플러그인을 만드는 방법은 무엇입니까?
이클립스 Google 그룹에서 발견, 그 J alapeno 플러그인과 내 클래스는 같은 클래스 로더에 의해로드되어야합니다 ... 어떻게 해야할지 모르겠다. – Imaskar
그것이 내가 필요한 것입니까? http://wiki.eclipse.org/index.php/BundleProxyClassLoader_recipe 예인 경우 사용 방법은 무엇입니까? – Imaskar
아래 내 대답을 한번보세요,하지만 네, 친구 클래스 로딩이 필요하다고 생각합니다. – nstehr