Re: ClassPath Order (NewHotness)

From: Lachlan Deck (lachlan.dec..mail.com)
Date: Wed Sep 10 2008 - 08:52:16 EDT

  • Next message: Mike Schrag: "Re: ClassPath Order (NewHotness)"

    On 10/09/2008, at 8:25 PM, Mike Schrag wrote:

    >>>> If I add ERExtensions to a project and push it above WebObjects,
    >>>> it still tells me that NSArray is not generic. However, if I just
    >>>> add ERExtensions as Projects (because I have them linked to my
    >>>> workspace), and push the projects above WO Frameworks, the
    >>>> ERExtensions generics NSArray, etc are picked up and errors go
    >>>> away ......
    >>> Hmm .. if you push ERExtensions framework up above WOOgnl, does it
    >>> fix the problem? This is a tricky thing and related to the depth
    >>> first vs breadth first stuff. If WOOgnl depends on WO, then WO
    >>> will end up loading (transitively) in eclipse before ERX, and
    >>> therefore will not be generic.
    >>
    >> Perhaps you could fix this by always appending transitive
    >> dependencies (as a set) to the end of the list.
    > Not sure if you mean at launch time or pre-launch-time.

    Well the classpath needs to be the same for compile-time as for
    runtime (or at least the runtime classpath is equal to or extends the
    compile-time classpath) to ensure the correct ordering.

    > If it's pre-launch, then we also have to maintain that list all the
    > time (which is kind of tricky -- is it there because you added it or
    > is it there because it was a transitive dep -- if it's transitive,
    > then we need to only remove it if it's gone from all the frameworks
    > that contain it recursively).

    i.e., you end up with two TreeSets (declaredDependencies,
    transitiveDependencies) and the resulting set is the union of the two.

    > If it's launch time, this is sort of tricky because Eclipse
    > constructs the flattened list of jars and folders for us, so we
    > "lose" the original frameworks by this time. I'm considering
    > rewriting eclipse's classpath "flattening" to suit our needs, but
    > there are a lot of benefits to playing nicely and not redefining low
    > level constructs liek this (for instance, launching things as java
    > apps vs wo apps would have different runtime classpaths, which is
    > pretty confusing)

    (at the risk of going out on a limb) perhaps instead of rewriting
    something, you could reuse something like these:
    http://maven.apache.org/ant-tasks.html, woproject-maven2...

    ;-)

    with regards,

    --
    

    Lachlan Deck



    This archive was generated by hypermail 2.0.0 : Wed Sep 10 2008 - 08:54:00 EDT