harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Ellison <t.p.elli...@gmail.com>
Subject Re: Eclipse doesn't find harmony sources
Date Wed, 25 Apr 2007 08:04:56 GMT
Wayne Beaton wrote:
> When you add a JRE to Eclipse, it scans the JRE's directory for JAR files.
> For each JAR file it finds, it looks for corresponding source. It does so by
> climbing up the containment hierarchy looking for a file named "src.jar" or
> "src.zip" (if you're curious, see
> org.eclipse.jdt.internal.launching.StandardVMType#getDefaultSystemLibrarySou
> rce()).
> Harmony JDK doesn't store is source this way (it seems to include the
> sources alongside the JAR files), so Eclipse doesn't find it (which means
> that if, for example, you browse the class java.lang.String, you get a
> "can't find the source" message in your editor).
> Is there a special reason why Harmony sources are represented the way they
> are? Is there any way to bundle 'em all up into a src.zip file? 

While they /could/ be packaged any way we choose, Harmony's modular
architecture splits JSE into these chunks, and we use that to support
modular development.

I'm actually surprised that Eclipse finds all the class file JARs, since
we do not have the standard rt.jar layout either.  I wrote a plug-in for
Eclipse that defines the Harmony libraries, with associated source JARs
as a new JDT VM type.  You can see the source rooted here [1], and get
the plug-in here [2].  (Yes, we did discuss creating an update site for
Apache's plug-ins, but it never got off the ground for various reasons.)

[1] http://svn.apache.org/viewvc/harmony/enhanced/tools/trunk/eclipse/

> In a related question, I'm not sure that putting them in the "jre" directory
> is the right approach. I tend to think of the JRE directory as containing
> *only* the JRE (i.e. I could yank it out and use it as a JRE) and the
> sources--being part of the JDK--are outside of that directory.

Yeah, I can go either way on that -- some prefer the source to be
alongside the binaries, others the way you describe.

> I also can't find the source for kernel.jar. Where is Object.java,
> Class.java, etc.?

As Nathan said, they are provided by the VM implementer, so in some
cases you may not have the source for those types (i.e. where the vendor
chooses not to make source available).  For DRLVM, of course, the source
will be available and if it is not that is an oversight.

Just to confuse matters further, the binaries and source for those types
are kept in jre/bin/<vm_dir> since we have the ability to support
multiple VMs in a single install.  The JARs in jre/lib/boot are only
compile-time stubs, so you don't want to debug through them (that is not
the code that is running!)

The JDT VM-type plug-in for Harmony defines the set of libraries
properly so you get to see the correct set in the IDE.

> I can understand why you'd want to have the sources in different files.
> Eclipse handles J9 specially. It's probably time to generalize it's
> implementation to handle arbitrary source configurations (perhaps via
> extension point).

There is already a piece of work underway at Eclipse to do that


View raw message