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