Gary Shea wrote:
Hey Steve --Presumably you have the demo running ok.
Thanks for the quick response!
Unfortunately for your hope of a quick and simple solution, I did read
the text in the kernel.xml file ;)
On Tue, 12 Nov 2002, at 03:00 [+0100], Stephen McConnell ([EMAIL PROTECTED]:
Gary Shea wrote:I've tried messing around with <library/> and <classpath/>, although I
This first attempt is a sort of merlin2 "hello world". I'm trying toIt looks like your kernel is missing the declaration of the extensions
deploy a single component with no dependencies, and using only
DefaultContainer as in the demo.
I'm having problems with classloading, apparently. The message is:
Could not locate an extension for the stage:
org.apache.excalibur.merlin.container.Structural/1.0.0
library.
haven't figured out where in the code they are used, so it's been pretty
naive.
The demo file in src/etc/kernel.xml declares to the kernel that the runtime merlin depedencies are contained in a directory named "extensions". If that is not supplied then Merlin will not have required classes available.
At the moment I don't think I should need an 'extensions
library',
You don't - Merlin does.
Are you running with the merlin script ? It runs with a jar reference and the jar has jar depedecy declarations. Thos depedent jar files should not be in the classpath - thy should be in the "extensions" directory (and only get dragged in on demand).since everything is in the main classloader. Actually not quite everything is in there; I added jars to the Class-Path: manifest entry of the app as needed so the code would run, which eventually sucked in all of the 'extensions' jars with the exception of excalibur threadcontext, excalibur collections (which I assume is obsolete), excalibur configuration, and excalibur container. If the problem is that one of them is missing, it's showing up in a very strange way!
Class-path outside of merlin is the wronog thing to play with. If you look at the merlin.bat file you will see that it is booting itself with a single jar. The manifest of that jar contains the delcaration of the depedent jar files - and the JRE checks the extension directory for these. Remember - this is at the boot stage so I'm takling about the -Djava.ext.dirs=.\extensions parameter. After merlin boots, the kernel is loaded at which time you can declare more extension directories using the <library/> element or declare jars using the <classpath/>.
No matter how I set the <library/> entry, I can't get merlin to run
without all the 'extension' jars in the manifest Class-Path:. I've
tried the experiment of removing one jar from the Class-Path and then
changing classpath and library to see if it would find the jar, and the
app always dies in early Merlin processing.
Because the extensions supplied on the java command declares the stuff prive to merlin. Whereas the extension declared inside the kernel and the classpath statements are all application space.
In the kernel.xml file you should see something like:
<!--
Declaration of installed extension directories and kernel level
classpath.
In this demo we are referencing the Merlin classes in the embedded
demo so
we need to include Merlin and its' extension depedencies in directory
referenced within the library element.
-->
<library dir=".">
<include name="extensions"/>
</library>
This tells Merlin where to look for dependent jar files.
Why does merlin.jar need to be found both in the main classloader and then again (I'm guessing) by another classloader? Jeez, I thought the chaining worked the other way!
This sounds like bootstrap to me - my guess is that your lauching Merlin differently. Anyway - its late and I could be wrong - if its the the boot then send me you kernel.xml (but if it was that you would be getting the info) and the log trace.
It's always like this...
Cheers, Steve.
Gary
Cheers, Steve.
in the root profile. The class should be available through the main--
classloader -- it's in the same jar that everything else is! Based on
what I've been able to figure out about the code, it's a matter of
getting a profile, but I'm not sure what profile.
I currently have no
profiles... but this didn't seem like something that would require a
profile from me!
--
To unsubscribe, e-mail: <mailto:avalon-users-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-users-help@;jakarta.apache.org>
Stephen J. McConnell
OSM SARL
digital products for a global economy
mailto:mcconnell@;osm.net
http://www.osm.net
--
To unsubscribe, e-mail: <mailto:avalon-users-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-users-help@;jakarta.apache.org>
--
To unsubscribe, e-mail: <mailto:avalon-users-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-users-help@;jakarta.apache.org>
-- Stephen J. McConnell OSM SARL digital products for a global economy mailto:mcconnell@;osm.net http://www.osm.net -- To unsubscribe, e-mail: <mailto:avalon-users-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:avalon-users-help@;jakarta.apache.org>
