I am experimenting with a rhino powered JavaScript shell for Eclipse
3.6. It was quite easy to get it running for pure JavaScript code.
Now I am facing problems when I try to access Java classes through the
LiveConnect feature.
Accessing "Packages.something..." works only for Java classes of the JRE
and for classes provided by the org.mozilla.javascript bundle (which
contains Context.class, etc). Classes of other bundles cannot be
accessed. Seems the classloader simply doesn't find them.
So I tried to register a different classloader:
ContextFactory.getGlobal().initApplicationClassLoader(Platform.class.getClassLoader());
but this fails as
public final void initApplicationClassLoader(ClassLoader loader)
{
if (loader == null)
throw new IllegalArgumentException("loader is null");
if (!Kit.testIfCanLoadRhinoClasses(loader))
throw new IllegalArgumentException(
"Loader can not resolve Rhino classes");
if (this.applicationClassLoader != null)
throw new IllegalStateException(
"applicationClassLoader can only be set once");
checkNotSealed();
this.applicationClassLoader = loader;
}
throws IllegalArgumentException("Loader can not resolve Rhino classes")
So I am stuck with 2 classloaders: 1 supports eclipse, but not rhino,
the other supports rhino, but not eclipse.
Is there a classloader out there that supports both worlds?
thanks
Christian Pontesegger
Sounds a little bit like what I was using for Rhino / Eclipse integration a
while back...
See:
http://dev.eclipse.org/viewcvs/index.cgi/e4/org.eclipse.e4.languages/bundles/org.eclipse.e4.javascript/src/org/eclipse/e4/internal/javascript/BundleProxyClassLoader.java?view=markup
http://dev.eclipse.org/viewcvs/index.cgi/e4/org.eclipse.e4.languages/bundles/org.eclipse.e4.javascript/src/org/eclipse/e4/internal/javascript/RhinoClassLoader.java?view=markup
Basically you create a class loader that chains rhino to another bundle for
classloading purposes.
HTH
-Simon
"Christian Pontesegger" <christian....@web.de> wrote in message
news:FKydnR6ihPOsL7bR...@mozilla.org...