[Biojava-dev] Bug report: getClassLoader() null return not handled
Shuvankar Mukherjee
shuvankr at hotmail.com
Sat May 8 06:33:49 EDT 2004
I am having similar problem while using biojava on Sybase's EAserver on
Windows NT.
I have prepared utility classes which works fine as stand-alone but could
not be used as AlphabetManager does not get initialized. (Same problem as
david mentioned).
EAserver (formerly jaguar) uses a sun VM.
Is the bug fixed in the current nightly build??? Could not follow David's
fix ??
EAserver is not even supporting a call of
System.out.println("ClassLoader is
:"+this.getClass().getClassLoader().getClass().getName());
while the standalone application supports the call and gives the following
output.
ClassLoader is :sun.misc.Launcher$AppClassLoader
Please advise ASAP.
regards
Shuvankar Mukherjee
> Thomas Down wrote:
>
> > Thanks for pointing this out.
> >
> > The same problem actually occurs in quite a lot of places -- quite a
> > few areas of the BioJava "guts" do things with ClassLoaders. I've
> > added a little ClassTools utility which provides a safe method for
> > getting hold of ClassLoaders. Should be in CVS soon, or grab
> > tommorow's nightly build.
> >
> Excellent. Thanks.
>
> > I'd be very interested to hear how you get on with IKVM. To date, I
> > don't know of anyone who's used Biojava with a non-Sun-derived Java
> > implementation.
>
>
> After making hackish fixes myself (which I'll replace with your new
> build), I can directly
> run biojava apps using the biojava.jar file. However, my normal mode of
> usage is
> to run the biojava.jar through an IKVM utility (ikvmc) that translates
> the java bytecodes into
> IL (aka .NET) bytecodes. This is a simple one step process that
> produces a .NET
> assembly file biojava.dll. The assembly includes all the resources in
> the original .jar.
> Now, I can just use the biojava API directly from any .NET language.
> I'm actually in the beginning stages of developing a custom language for
> bioinformatics
> (and scientific computing in general) called Scigol.
> So, now I can transparently access biojava (or any java) APIs from my
> scigol programs.
> I plan to do the same with python in future (either using Python.NET
> or Jython via IKVM compilation).
> Next I plan to embedd the ikvmc functionality into the scigol
> interpreter (no compiler yet)
> so that the user can just drop .jar files into their scigol library path
> and then use the APIs
> directly.
> Note that I'm doing all this uner Linux using Novell's (formerly
> Ximian's) mono
> implementation of the .NET stuff. This means that the Java standard
> APIs are
> being supplied by the Class-path project (from which IKVM distributes a
> IL version as classpath.dll). The main missing part from class-path is
> Swing.
> For this I'm investigating SwingWT - and open source implementation of
Swing
> that targets IBM's SWT GUI API (which uses native peers on various
> platforms).
> It is cool to see the SwingSet demo running with a native look under
> Linux/Gnome!
> I'd like to be able to use Swing from Scigol & C# under Linux & Windows.
>
> Thomas Down wrote:
>
> > I actually found calls to getClassLoader in 20 files, they should all
> > now be fixed.
> >
> > (Out of interest, do the IKVM developers give any specific reason for
> > returning null? I find it a little bit worrying, because it seems to
> > suggest that the VM isn't really distinguishing between its bootstrap
> > classpath (with the core classes) and the application classpath. I
> > don't know if this distinction has ever been formally specified by
> > Sun, but it's something a lot of developers take for granted now.)
> >
> Their initial comment when I pasted a bit of the offenting biojava code
> to the ikvm mailing list
> was to say that the code was buggy (I explained about the null return &
> the Sun docs).
> However, I agree with you, that a behaviour closer to Sun's would be
> helpful. I don't understand
> exactly how the ikvm remapping plumbing works, so perhaps making it
> perform that
> way is difficult for some reason. The remapping does some trickery to
> make obejcts, strings,
> exceptions etc. look like the appropriate classes from each API. (e.g.
> So I can access the
> System.Exception.InnerException property of an exception caught on the
> CLI side, say in
> C#, and if the exception was thrown from Java I'll get the same as if I
> called java's getCause()
> method (except that the return result is a CLI Exception class!) ).
>
> I will post again to the ikvm list with your comment above (unless you
> object) and ask why
> ikvm behaves that way and if there is any reason why making it behave
> more like the JDK
> would be difficult or bad.
>
> Oh - one other thing. One reply from the ikvm list commented that the
> resource names
> should have a leading '/' on them. I don't know if that is true or not
> - but the getResourceAsStream()
> calls work as is now.
>
> Thanks very much for your feedback and fixes.
> Cheers,
> -David.
>
> _______________________________________________
> biojava-dev mailing list
> biojava-dev at biojava.org
> http://biojava.org/mailman/listinfo/biojava-dev
>
More information about the biojava-dev
mailing list