from the book (javadoc)
> java.lang.LinkageError
>
> Subclasses of LinkageError indicate that a class has some dependency on
> another class; however, the latter class has incompatibly changed after the
> compilation of the former class.
So clearly it has to be some variant of a not-clean-build, so you need
to check your build/deploy/test strategy.
I'ld suggest removing references to any of the cocoon 1-4 jars and do a
clean rebuild of your complete project, chances are you do have some
lingering calls/references in there to the old stuff...
You might want to check your deployment process as well, maybe newer
versions of your jars aren't uploaded to the test-environment, or
they're not overwriting/removing the old ones and name/version-numbers
are putting them behind the old ones in the classpath (so you still have
the old ones loaded)
One way to detect this last issue is by calling
classloader.getResource("be/sofico/MyApple.class") and see from which
jar your class gets loaded...
Maybe also compare checksums on those jar-files ensuring it's in sync
with the version you've just been cleanly-rebuilding..
regards,
-marc=
Gunter D'Hondt wrote:
> Anybody an idea of my problem below?? I've already tried several things
> but I'm out of ideas now and this is blocking our upgrade from 2.1.4 to
> 2.1.8
>
> Thanks in advance!
> Gunter D'Hondt
>
>
>
>
>
>
> Gunter D'Hondt <[EMAIL PROTECTED]>
> 23/02/2006 14:37
> Please respond to
> [email protected]
>
>
> To
> [email protected]
> cc
>
> Subject
> Re: map:call function
>
>
>
>
>
>
> apparently the call function does work but when instantiating my apple it
> gets a java.lang.LinkageError:
>
> I've adjusted the
> org.apache.cocoon.components.flow.apples.ApplesProcessor:
> private AppleController instantiateController(String className)
> throws Exception {
>
> // TODO think about dynamic reloading of these beasts in future
> // classloading stuf et al.
>
> if (getLogger().isDebugEnabled())
> getLogger().debug("ApplesProcessor->instantiateController() -
> className='"+className+"'");
>
> try {
> Class clazz = Class.forName(className);
> Object o = clazz.newInstance();
> return (AppleController) o;
> }
> catch (LinkageError e)
> {
> if (getLogger().isDebugEnabled())
> getLogger().debug("ApplesProcessor->instantiateController() -
> LinkageError msg="+e.getMessage());
> }
> return null;
> }
>
>
> this generates the following logging;
> (2006-02-23) 14:19.15:296 ApplesProcessor: ApplesProcessor->callFunction()
>
> - className='be.sofico.MyApple'
> (2006-02-23) 14:19.15:296 ApplesProcessor:
> ApplesProcessor->instantiateController() - className='be.sofico.MyApple'
> (2006-02-23) 14:19.15:312 ApplesProcessor:
> ApplesProcessor->instantiateController() - LinkageError
> msg=org/apache/cocoon/woody/formmodel/Widget
>
> so it must be something inside the class MyApple that incorrectly links to
>
> the old Woody Widget class but looking at the import of my class this
> should not be possible:
>
> import org.apache.cocoon.ProcessingException;
> import org.apache.cocoon.i18n.I18nUtils;
> import org.apache.cocoon.components.flow.apples.AppleController;
> import org.apache.cocoon.components.flow.apples.AppleRequest;
> import org.apache.cocoon.components.flow.apples.AppleResponse;
> import org.apache.cocoon.environment.Session;
> import org.apache.cocoon.forms.FormContext;
> import org.apache.cocoon.forms.FormManager;
> import org.apache.cocoon.forms.binding.Binding;
> import org.apache.cocoon.forms.binding.BindingManager;
> import org.apache.cocoon.forms.event.FormHandler;
> import org.apache.cocoon.forms.formmodel.Form;
> I've recompiled all the classes correctly; I'm assuming that I don't need
> the deprecated woody-block to run the cforms-block ???
>
> Pls, any help is welcome,
>
> Regards,
> Gunter D'Hondt
>
>
>
>
>
>
>
>
> Gunter D'Hondt <[EMAIL PROTECTED]>
> 22/02/2006 15:47
> Please respond to
> [email protected]
>
>
> To
> [email protected]
> cc
>
> Subject
> map:call function
>
>
>
>
>
>
> I'm currently upgrading from 2.1.4 to 2.1.8 and converted all Woody stuff
> to CForms stuff but when calling the following sitemap snippet I'm getting
>
>
> the error below.
>
> sitemap snippet:
> <map:flow language="apples"/>
> ...
> <map:match pattern="welcomepage">
> <map:call function="be.sofico.myApple">
> ...
> </map:call>
> </map:match>
>
> the stacktrace snippet:
> java.lang.NoClassDefFoundError: org/apache/cocoon/woody/formmodel/Widget
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:141)
> at
> org.apache.cocoon.components.flow.apples.ApplesProcessor.instantiateController(ApplesProcessor.java:108)
> at
> org.apache.cocoon.components.flow.apples.ApplesProcessor.callFunction(ApplesProcessor.java:52)
> at
> org.apache.cocoon.components.treeprocessor.sitemap.CallFunctionNode.invoke(CallFunctionNode.java:138)
>
> so following the ApplesProcessor.java:108 it should make a new instance
> (thru reflecting) from the "be.sofico.myApple" string "classname" but
> apparently it is trying to make a Widget object using the old woody
> package. I don't even understand why it should make a CForms widget at
> that moment.
>
> any help is welcome,
>
> Regards,
> Gunter D'Hondt
>
>
--
Marc Portier http://outerthought.org/
Outerthought - Open Source, Java & XML Competence Support Center
Read my weblog at http://blogs.cocoondev.org/mpo/
[EMAIL PROTECTED] [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]