Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [riena-dev] Interface not visible from class loader!

I got bitten by this yesterday, while updating the remote services template.

I'm adding a note about register-buddy and the
"org.eclipse.riena.communications.core" dependency to the remote
services page on the wiki :-)

http://wiki.eclipse.org/Riena_Getting_started_remoteservices#Starting

Elias.

On Fri, Mar 27, 2009 at 5:46 PM, Christian Campo
<christian.campo@xxxxxxxxxxxx> wrote:
> Hi Yau,
> in order for Buddy as proposed below to work, the common bundle must also be
> dependant on org.eclipse.riena.communication.core.
> So you need two things, the register buddy and the dependency both
> referencing o.e.r.communication.core
> christian
> Am 27.03.2009 um 05:48 schrieb Stefan Liebig:
>
> Hi Yau,
>
> Try adding:
> Eclipse-RegisterBuddy: org.eclipse.riena.communication.core
> to the manifest.mf of your common bundle.
>
> See also in the ping pong example bundle:
> org.eclipse.riena.communication.sample.pingpong.common
>
> Tschüß,
> Stefan
>
> yau wrote:
>
> Hi, Stefan Liebig
> Thanks for your reply!
>
>
>
>
> In your common bundle:
> - is the interface ITestService
> - in it´s activator it references ITestService the first time  with
>
>
> Class<?> servIntf = ITestService.class; (does not fail here!)
>
> Yes, I run in debug mode and set a bookmark on the statement:
> Class<?> servIntf = ITestService.class;
> and step over, it is not failed.
>
>
>
>
>
> - and than fails with an exception when creating the proxy
>
>
> Yes, an exception raised at
> rsf.createAndRegisterProxy(servIntf, url, protocol, context);
>
>
>
>
>
>
> Can you please provide a stacktrace, the activator and the ITestService?
>
>
> The common plugin activator:
> =========================
> package cn.com.dwservice.dw2appservcommon;
> import ....;
>
> public class Activator implements BundleActivator {
>
>  private RemoteServReg remoteServReg;
>
>  public void start(BundleContext context) throws Exception {
>   remoteServReg = new RemoteServReg();
>   remoteServReg.start(context);
>  }
>
>  public void stop(BundleContext context) throws Exception {
>   if (remoteServReg != null) {
>    remoteServReg.stop(context);
>    remoteServReg = null;
>   }
>  }
>
>
> The RemoteServReg.java
> =============================
> package cn.com.dwservice.dw2appservcommon;
> import ....;
>
> public class RemoteServReg {
>
>  private IRemoteServiceRegistration remoteServReg;
>
>  public void start(BundleContext context) throws Exception {
>   RemoteServiceFactory rsf = new RemoteServiceFactory();
>   Class<?> servIntf = ITestService.class;
>   String url = "http://127.0.0.1:8080/dwserver/test/testService";;
>   String protocol = DWServConsts.REMOTE_PROTOCOL_HESSIAN;
>
>   remoteServReg = rsf.createAndRegisterProxy(servIntf, url, protocol,
> context);
>  }
>
>  public void stop(BundleContext context) throws Exception {
>   if (remoteServReg != null) {
>    remoteServReg.unregister();
>    remoteServReg = null;
>   }
>  }
> }
>
>
> The ITestService.java
> ============================
> package cn.com.dwservice.dw2appservcommon.model;
>
> public interface ITestService {
>  String testPermission();
> }
>
>
>
> The following is the stacktrace:
> =====================
>
> java.lang.NoClassDefFoundError:
> cn/com/dwservice/dw2appservcommon/model/ITestService
>  at
> cn.com.dwservice.dwserver2.tests.TestRienaWebService.internalRun(TestRienaWebService.java:54)
>  at
> net.yau.eclipse.common.dialogs.TestRunnableObjBase.run(TestRunnableObjBase.java:29)
>  at
> net.yau.eclipse.common.dialogs.SelectiveRunDialog$1.widgetSelected(SelectiveRunDialog.java:91)
>  at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
>  at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
>  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
>  at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
>  at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
>  at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
>  at org.eclipse.jface.window.Window.open(Window.java:801)
>  at cn.com.dwservice.dwserver2.tests.TestAction.run(TestAction.java:46)
>  at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
>  at
> org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
>  at
> org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
>  at
> org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
>  at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
>  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
>  at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
>  at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
>  at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
>  at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
>  at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
>  at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
>  at
> org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
>  at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
>  at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
>  at cn.com.dwservice.dwserver2.Application.start(Application.java:20)
>  at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
>  at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
>  at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>  at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
>  at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>  at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>  at java.lang.reflect.Method.invoke(Method.java:597)
>  at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
>  at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>  at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>  at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>
>
> Caused by:
> org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException:
> An error occurred while automatically activating bundle
> cn.com.dwservice.dw2AppServCommon (194).
>  at
> org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:125)
>  at
> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:427)
>  at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
>  at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:370)
>  at
> org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
>  at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:443)
>  at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399)
>  at
> org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387)
>  at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
>  at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>  ... 40 more
>
>
> Caused by: org.osgi.framework.BundleException: Exception in
> cn.com.dwservice.dw2appservcommon.Activator.start() of bundle
> cn.com.dwservice.dw2AppServCommon.
>  at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1028)
>  at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:984)
>  at
> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
>  at
> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
>  at
> org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)
>  at
> org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
>  ... 50 more
>
>
> Caused by: java.lang.IllegalArgumentException: interface
> cn.com.dwservice.dw2appservcommon.model.ITestService is not visible from
> class loader
>  at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
>  at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
>  at
> com.caucho.hessian.client.HessianProxyFactory.create(HessianProxyFactory.java:394)
>  at
> com.caucho.hessian.client.HessianProxyFactory.create(HessianProxyFactory.java:354)
>  at
> org.eclipse.riena.internal.communication.factory.hessian.RemoteServiceFactoryHessian.createProxy(RemoteServiceFactoryHessian.java:73)
>  at
> org.eclipse.riena.internal.communication.factory.hessian.RemoteServiceFactoryHessian.createProxy(RemoteServiceFactoryHessian.java:1)
>  at
> org.eclipse.riena.communication.core.factory.RemoteServiceFactory.createProxy(RemoteServiceFactory.java:233)
>  at
> org.eclipse.riena.communication.core.factory.RemoteServiceFactory.createAndRegisterProxy(RemoteServiceFactory.java:148)
>  at
> org.eclipse.riena.communication.core.factory.RemoteServiceFactory.createAndRegisterProxy(RemoteServiceFactory.java:125)
>  at
> cn.com.dwservice.dw2appservcommon.RemoteServReg.start(RemoteServReg.java:25)
>  at cn.com.dwservice.dw2appservcommon.Activator.start(Activator.java:16)
>  at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:1009)
>  at java.security.AccessController.doPrivileged(Native Method)
>  at
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1003)
>  ... 55 more
>
>
> Regards,
> Yau
>
>
> <ATT00001.c>
>
> _______________________________________________
> riena-dev mailing list
> riena-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/riena-dev
>
>



-- 
Elias Volanakis | Technical Lead | http://eclipsesource.com
elias@xxxxxxxxxxxxxxxxx | +1 503 929 5537 | @evolanakis


Back to the top