cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Portier <...@outerthought.org>
Subject Re: map:call function
Date Thu, 09 Mar 2006 07:23:01 GMT
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 <gunter.dhondt@sofico.be> 
> 23/02/2006 14:37
> Please respond to
> users@cocoon.apache.org
> 
> 
> To
> users@cocoon.apache.org
> 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 <gunter.dhondt@sofico.be> 
> 22/02/2006 15:47
> Please respond to
> users@cocoon.apache.org
> 
> 
> To
> users@cocoon.apache.org
> 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/
mpo@outerthought.org                              mpo@apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message