Build Time Wicket Instrumentation with Ant (and other problems)
robshep Feb 16, 2010 12:13 PMHi,
A simple query for those who have build time instrumentation working with Wicket.
I have the following structure in the build.xml
<mkdir dir="classes/wicket" /> <!-- Compile the Wicket classes --> <javac classpathref="wicket.classpath" destdir="classes/wicket" debug="${javac.debug}" deprecation="${javac.deprecation}" nowarn="off"> <src path="src/web" /> </javac> <!-- Instrument the SEAM annotations --> <instrumentWicket outputDirectory="${war.dir}/WEB-INF/classes" useAnnotations="false"> <classpath refid="build.classpath"/> <fileset dir="classes/wicket" includes="**/*.class"/> </instrumentWicket> <!-- Copy the html markup to the same location --> <copy todir="${war.dir}/WEB-INF/classes"> <fileset dir="src/web"> <include name="**/*.html"/> <include name="**/*.js"/> </fileset> </copy>
But I see the following error during build at instrumentation time.
java.lang.RuntimeException: javassist.NotFoundException: com.example.myclass
This class exists in classes/wicket
So I'm not sure what the problem can be. Can anybody see an obvious problem with my build.xml excerpt?
Incidentally, I'm attempting to switch to compile-time wicket instrumentation to try and workaround/resolve/indicate a strange problem.
I have the following class in my web/ folder....
package com.example.effect; import org.apache.wicket.Component; public class TheClassName { //private Component component; public TheClassName(/*Component component*/) { //this.component = component; } }
...And, strangely if I uncomment the above lines (in fact just the first will do) Then my application fails as follows.
09:51:13,692 ERROR [[default]] Servlet.service() for servlet default threw exception java.lang.ClassCastException: org.jboss.seam.wicket.WicketManager at org.jboss.seam.faces.FacesManager.instance(FacesManager.java:313) at org.jboss.seam.exception.DebugPageHandler.handle(DebugPageHandler.java:26) at org.jboss.seam.exception.Exceptions.handle(Exceptions.java:76) at org.jboss.seam.web.ExceptionFilter.endWebRequestAfterException(ExceptionFilter.java:114) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:70) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:613)
....I'm thus making the assumption that Run-Time instrumentation is failing somehow (sliently) and WicketManager doesn't get constructed (Warning - guess hazarding in progress!!)
Strange but true.
With thanks for any help with these problems
Rob