You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@click.apache.org by "Bob Schellink (JIRA)" <ji...@apache.org> on 2009/05/01 11:36:30 UTC

[jira] Closed: (CLK-540) ClassCastException in XmlConfigService

     [ https://issues.apache.org/jira/browse/CLK-540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bob Schellink closed CLK-540.
-----------------------------

       Resolution: Invalid
    Fix Version/s:     (was: 2.1.0)

Since the packages are the same my only conclusion is this is a ClassLoader issue. What I mean by that is if a class are loaded by two different ClassLoaders the JVM will see them as two different, incompatible classes, e.g one cannot cast one class to the other.

In servlet containers one often find a ClassLoader hierarchy where a global classloader is used to load classes which is global to all web applications, and each web application also have their own separate classloader. If the click.jar is (somehow) placed in the common lib folder it will be loaded by the global classloader. If the click.jar is made part of the WAR, the same classes will be loaded again by the web application class loader and the above error can occur.

I'm no Eclipse expert but know that with Eclipse Ganymede they ship an internal Jetty server which might be causing problems? Also Eclipse might be copying the click.jar to the shared Jetty library folder? But I'm just guessing and might even lead you down the wrong path :)

Anyway I'm closing this issue and I'm quite certain this is not a Click bug. You might also want to check on the user mailing list if anyone else has run into this issue.

bob

> ClassCastException in XmlConfigService
> --------------------------------------
>
>                 Key: CLK-540
>                 URL: https://issues.apache.org/jira/browse/CLK-540
>             Project: Click
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.1.0
>         Environment: Windows XP Professional,
> eclipse ganymede,
> jdk1.6.0,
> tried to run with jetty 6 and tomcat 6.
>            Reporter: Luiz Eduardo Martins Rodrigues
>            Priority: Critical
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> java.lang.ClassCastException: org.apache.click.control.Table cannot be cast to org.apache.click.Control
> 	at org.apache.click.service.XmlConfigService.deployControls(XmlConfigService.java:1041)
> 	at org.apache.click.service.XmlConfigService.deployFiles(XmlConfigService.java:1095)
> 	at org.apache.click.service.XmlConfigService.onInit(XmlConfigService.java:226)
> 	at org.apache.click.ClickServlet.initConfigService(ClickServlet.java:1562)
> 	at org.apache.click.ClickServlet.init(ClickServlet.java:178)
> 	at br.ufpr.hc.infra.hibernate.HibernateClickServlet.init(HibernateClickServlet.java:27)
> 	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
> 	at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433)
> 	at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256)
> 	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
> 	at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612)
> 	at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
> 	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1216)
> 	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:509)
> 	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:447)
> 	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
> 	at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
> 	at org.mortbay.jetty.Server.doStart(Server.java:222)
> 	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
> 	at runjettyrun.Bootstrap.main(Bootstrap.java:76)
> at the same time, I´ve created a main method inside the project with these lines:
> String classname = "org.apache.click.control.Table";
> Class deployClass = ClickUtils.classForName(classname);
> Control control = (Control) deployClass.newInstance();
> and it worked...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.