Eclipse'de bir Bundle oluşturdum ve "Overview" sekmesi için "Framework'ü Başlat" bağlantısını kullandım. Paketimde bir arabirim (TestService) oluşturdum ve bunun için bir proxy oluşturması gereken kod (Helper'da). Ben Demet Activator Bu kodu arama ve almak:Bir OSGi Paketinde Javassist ClassPool'u nasıl oluşturur/başlatırsınız?
Caused by: javassist.NotFoundException: com.test.services.TestService
at javassist.ClassPool.get(ClassPool.java:436)
at com.test.services.Helper.get(Helper.java:46)
İlk ClassPool.get() doğru atar:
ClassPool pool = ClassPool.getDefault();
CtClass result = pool.get(TestService.class.getName());
...
Testservice kamu ve aynı paket içinde ve İstisnayı yaratan Yardımcı olarak Bundle. Açıkçası, sadece "ClassPool.getDefault()" yapmak için yeterince iyi değil. Peki, ClassPool'un Bundle içindeki sınıfları görmesi için ne yapmam gerekiyor? Kendi paketlerimı almam mı gerekiyor?
Javassist demetinin kendisinin yüklediğini sorduğunuz sınıfların görünürlüğüne ihtiyacı olacağını varsayalım. Maalesef, javasinin sınıfları nasıl gördüğünü bilmiyorum. Hangi classloader kullanacağını söyleyebilir misin yoksa sadece rastgele bir tahminde mi? Gerçek 'Class' nesnelerle yapılandırılabilir mi, yoksa Dizeler olarak sağlanan sınıf isimleri üzerinde mi ısrar ediyor? –
Sadece Javassist ile başlıyorum, emin değilim, ama bu akşam kontrol edip size cevap vereceğim. Ancak, bu problemi zaten belirttiğinizi sanıyorum; OSGi bir Bundle'ın görebileceği paketleri sınırlar, bu yüzden kendi paketimi Javassist Paketinin "ithalat paketine" eklemek yeterli olabilir. –