That is EXACTLY what I am trying to do today. I've tooled around in the ant code, and it seems this is more of a jasper issue than an ant one, because ant passes a long list of files to jasper, with the unwanted pathnames that end up as part of your package name.
I'm pretty sure if you used something like <foreach> to iterate through the same fileset that is being created in the jspc task, and called jspc for each directory individually, and used the package="org.apache.jsp" attribute, then this would work - because then jasper wouldn't know about you're own subdirectory. But this seems ugly so I haven't actually done it yet. You can use the webapp element inside jspc, but then jasper doesn't know about your <exclude> and so tries to compile some fragment.jsp type include files, that are not really full jsp files, and so it crashes on those ( this is my current problem ). But if all your included files are called .inc rather than .jsp then this may work. <jspc destdir="${webapp.workdir}" failonerror="false" classpathref="jspPreCompile.classpath" package="org.apache.jsp" compiler="jasper41"> <webapp basedir="${webapp.path}"/> <exclude name="**/WEB-INF/**"/> <exclude name="include/**"/> </jspc> So now I'm trying to make an ant step or task to replace the first line of every generated _jsp.java file with the correct package name, between generating them and compiling them. Plz met me know if you have something better. Regards, Steph PS - if you're from the same HMDC i know, I suspect the site you are trying to pre-compile, is one I wrote last summer. > -----Original Message----- > From: Mark R. Diggory [mailto:[EMAIL PROTECTED] > Sent: Friday, August 01, 2003 5:19 PM > To: Tomcat Users List > Subject: Jasper, JSPC, Ant and Precompiling JSP's > > > Hello, > > I've done my best to review the archives to resolve my problem, but I've > not found a solution there so I'm posting it. > > I'm stuck back on Tomcat 4.1.24 (LE) and I'm encountering some issues > with JSP Precompilation using Ant and JSPC. First let me outline my problem. > > Most messages I've read to date focus on using JSP recompiling to turn > the JSP into Servlets stored in a WAR file and require generating a > fragment web.xml file and including it into your web.xml, I AM NOT > trying to do this. I want my JSP's to get precompiled into the work > directory of Tomcat and used from there, the exact same way that Tomcat > does it. This way afterward, if the jsp is modified, tomcat can still > recompile it. > > > I have the following jspc and javac tasks coded in my build.xml: > > <mkdir dir="/var/tomcat4/work/Standalone/localhost/Foo"/> > > <jspc srcdir="${deploy.home}" > destdir="/var/tomcat4/work/Standalone/localhost/Foo" > failonerror="false" > compiler="jasper41"> > <classpath> > <!-- snip --> > </classpath> > <exclude name="**/WEB-INF/**"/> > </jspc> > > <javac destdir="/var/tomcat4/work/Standalone/localhost/Foo" > optimize="off" > debug="on" failonerror="false" > srcdir="/var/tomcat4/work/Standalone/localhost/Foo" > excludes="**/*.smap"> > <classpath> > <!-- snip --> > </classpath> > </javac> > > > Both tasks get completed successfully. I observe problems in the package > names of the JSPC generated java files where the following is the case. > > /var/tomcat/webapps/Foo/Bar/Bam.jsp results in the package name > > package Bar; > ... > > which becomes a problem when I try to access this JSP included into > another, I get the following error > > java.lang.NoClassDefFoundError: org/apache/jsp/Bam_jsp (wrong name: > Bar/Bam_jsp) > at java.lang.ClassLoader.defineClass0(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:502) > at java.lang.ClassLoader.defineClass(ClassLoader.java:431) > at org.apache.jasper.servlet.JasperLoader.loadClass(Unknown Source) > at org.apache.jasper.servlet.JasperLoader.loadClass(Unknown Source) > at org.apache.jasper.JspCompilationContext.load(Unknown Source) > at org.apache.jasper.servlet.JspServletWrapper.getServlet(Unknown Source) > at org.apache.jasper.compiler.Compiler.isOutDated(Unknown Source) > at org.apache.jasper.compiler.Compiler.isOutDated(Unknown Source) > ... > > > I read somewhere that work had been done on my version (4.1.24) to > eliminate a naming conflict problem. I assume this is why there are now > package names on my _jsp.java files. I find that when I let > Tomcat/Jasper compile all my jsp's the java files *all* have the package > name "org.apache.jsp" no matter what their directory. I assume that my > compilation is conflicting with Tomcats because of the package naming > differences. > > So, I've tried adding the following attribute package="org.apache.jsp" > to the jspc task, but this results in even more problems because all the > package names now look like: > > package org.apache.jsp.Bar; > > and when they are compiled, they end up in a separate directory > > /var/tomcat4/work/Foo/org/apache/jsp/Bar/Bam_jsp.java > > Any ideas or solutions out there would be really helpful for me. I just > want to have Tomcat start out using my precompiled jsp's instead of > initially compiling them itself. > > thanks > Mark Diggory > HMDC > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]