You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Larry Karnowski <la...@oculan.com> on 2003/12/09 23:12:21 UTC
JSP Compile in Ant with Tomcat 5.0.16
All,
I'm getting error messages while compiling JSPs at runtime inside Tomcat
but not when I compile the same JSPs with the <jasper2> Ant task.
I've upgraded my Ant build to use the new <jasper2> tag (the
org.apache.jasper.JspC class) instead of the old <jspc> tag that came
with Ant. (It doesn't work with Tomcat 5.0.16.) All my JSPs compile
fine with the new class.
However, when I actually put the JSPs in my webapp for Tomcat to
compile, I get a few compilation errors. Note that I'm compiling my
JSPs as a quality assurance step, not to ship precompiled Java classes.
I'm trying to find errors at build time rather than run time.
The problem comes with a poorly-coded JSP include action like this:
<jsp:include page="/asset/search.jsp" flush="false" >
</jsp:include>
I'll be the first to admit this is poor style, and I'm not too upset
that Tomcat won't compile it. I can easily fix it by removing the
trailing tag and making it an empty tag. However, my normal method of
finding these types of errors is failing me -- my Ant JSP build.
This is my build.xml snippet:
<jasper2
uriroot="${install.servlets}"
webXmlFragment="${root.build}/jspc/generated_web.xml"
outputDir="${root.build}/jspc"
package="org.apache.jsp.oculan"
/>
This is the error message I get from Tomcat:
Expected "param" tag with "name" and "value" attributes
I've started combing through the Jasper code to find what's different
when compiling inside Tomcat as opposed to inside Ant. I've looked
through all the top-level Jasper wrappering code that gathers the
compilation options, but nothing seems significantly different. None of
the compile options seem to be relevant to this issue.
There must be something going on deeper in the actual JSP compilation
code. Does anyone have any idea what's happening?
Thanks,
Larry Karnowski
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: JSP Compile in Ant with Tomcat 5.0.16
Posted by Remy Maucherat <re...@jboss.org>.
Larry Karnowski wrote:
> All,
> I've disovered the cause of my problems with the Ant build using the
> JspC task. I'm documenting the workaround here for anyone else having
> similar problems.
>
> I thought that the JSP Ant build was successful even though I was seeing
> errors with runtime compilation in Tomcat because Ant was reporting a
> BUILD SUCCESSFUL. However, after checking the generated *.java files, I
> found that the same files that were causing Tomcat to fail were also
> failing in Ant, only quietly. The JspC task was creating zero-length
> Java files that Javac was then quietly ignoring. This is because of two
> problems below:
>
> 1) Apache bug #25452
> ((http://issues.apache.org/bugzilla/show_bug.cgi?id=25452), where the
> Ant build is not notified if there are any JspC compile issues. Instead
> it creates zero-length Java files.
>
> 2) I didn't have my commons-logging-api configured correctly. I
> strongly recommend adding the following to your Java command in your Ant
> shell script to ensure proper error logging during JSP compiles:
>
> -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
> -Dorg.apache.commons.logging.simplelog.defaultlog=info
> -Dorg.apache.commons.logging.simplelog.showdatetime=true
>
> These properties will tell JspC to use the SimpleLog class which sends
> its log messages to stderr. You might still get a BUILD SUCCESSFUL
> report from Ant, but a human can look back through the build output and
> see any error messages. Also, you can do a check for empty Java files.
> (example "find builddir -name \*.java -empty")
>
> I hope this helps, and thanks to Rémy for looking!
It's easy to set those properties in the Ant script. I think I'll add them.
The nightly build should have the fix and make the build fail (I didn't
try it though).
--
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rémy Maucherat
Senior Developer & Consultant
JBoss Group (Europe) SàRL
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: JSP Compile in Ant with Tomcat 5.0.16
Posted by Larry Karnowski <la...@oculan.com>.
All,
I've disovered the cause of my problems with the Ant build using the
JspC task. I'm documenting the workaround here for anyone else having
similar problems.
I thought that the JSP Ant build was successful even though I was seeing
errors with runtime compilation in Tomcat because Ant was reporting a
BUILD SUCCESSFUL. However, after checking the generated *.java files, I
found that the same files that were causing Tomcat to fail were also
failing in Ant, only quietly. The JspC task was creating zero-length
Java files that Javac was then quietly ignoring. This is because of two
problems below:
1) Apache bug #25452
((http://issues.apache.org/bugzilla/show_bug.cgi?id=25452), where the
Ant build is not notified if there are any JspC compile issues. Instead
it creates zero-length Java files.
2) I didn't have my commons-logging-api configured correctly. I
strongly recommend adding the following to your Java command in your Ant
shell script to ensure proper error logging during JSP compiles:
-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
-Dorg.apache.commons.logging.simplelog.defaultlog=info
-Dorg.apache.commons.logging.simplelog.showdatetime=true
These properties will tell JspC to use the SimpleLog class which sends
its log messages to stderr. You might still get a BUILD SUCCESSFUL
report from Ant, but a human can look back through the build output and
see any error messages. Also, you can do a check for empty Java files.
(example "find builddir -name \*.java -empty")
I hope this helps, and thanks to Rémy for looking!
Larry Karnowski
Remy Maucherat wrote:
> Larry Karnowski wrote:
>
>> All,
>> I'm getting error messages while compiling JSPs at runtime inside
>> Tomcat but not when I compile the same JSPs with the <jasper2> Ant task.
>>
>> I've upgraded my Ant build to use the new <jasper2> tag (the
>> org.apache.jasper.JspC class) instead of the old <jspc> tag that came
>> with Ant. (It doesn't work with Tomcat 5.0.16.) All my JSPs compile
>> fine with the new class.
>
>
> <jspc> and <jasper2> are the same, as long as the task classname is the
> same :) So you should be able to rename jasper2.
>
>> However, when I actually put the JSPs in my webapp for Tomcat to
>> compile, I get a few compilation errors. Note that I'm compiling my
>> JSPs as a quality assurance step, not to ship precompiled Java classes.
>
>
> This is a very good practice. It does allow detecting many trivial
> errors much faster.
>
>> I'm trying to find errors at build time rather than run time.
>>
>> The problem comes with a poorly-coded JSP include action like this:
>>
>> <jsp:include page="/asset/search.jsp" flush="false" >
>> </jsp:include>
>>
>> I'll be the first to admit this is poor style, and I'm not too upset
>> that Tomcat won't compile it. I can easily fix it by removing the
>> trailing tag and making it an empty tag. However, my normal method of
>> finding these types of errors is failing me -- my Ant JSP build.
>
>
> Standard JSPs are not XML. Maybe that's the problem. You should post the
> error you're getting, BTW.
>
>> This is my build.xml snippet:
>> <jasper2
>> uriroot="${install.servlets}"
>> webXmlFragment="${root.build}/jspc/generated_web.xml"
>> outputDir="${root.build}/jspc"
>> package="org.apache.jsp.oculan"
>> />
>>
>> This is the error message I get from Tomcat:
>> Expected "param" tag with "name" and "value" attributes
>>
>> I've started combing through the Jasper code to find what's different
>> when compiling inside Tomcat as opposed to inside Ant. I've looked
>> through all the top-level Jasper wrappering code that gathers the
>> compilation options, but nothing seems significantly different. None
>> of the compile options seem to be relevant to this issue.
>>
>> There must be something going on deeper in the actual JSP compilation
>> code. Does anyone have any idea what's happening?
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: JSP Compile in Ant with Tomcat 5.0.16
Posted by Remy Maucherat <re...@jboss.org>.
Larry Karnowski wrote:
> All,
> I'm getting error messages while compiling JSPs at runtime inside Tomcat
> but not when I compile the same JSPs with the <jasper2> Ant task.
>
> I've upgraded my Ant build to use the new <jasper2> tag (the
> org.apache.jasper.JspC class) instead of the old <jspc> tag that came
> with Ant. (It doesn't work with Tomcat 5.0.16.) All my JSPs compile
> fine with the new class.
<jspc> and <jasper2> are the same, as long as the task classname is the
same :) So you should be able to rename jasper2.
> However, when I actually put the JSPs in my webapp for Tomcat to
> compile, I get a few compilation errors. Note that I'm compiling my
> JSPs as a quality assurance step, not to ship precompiled Java classes.
This is a very good practice. It does allow detecting many trivial
errors much faster.
> I'm trying to find errors at build time rather than run time.
>
> The problem comes with a poorly-coded JSP include action like this:
>
> <jsp:include page="/asset/search.jsp" flush="false" >
> </jsp:include>
>
> I'll be the first to admit this is poor style, and I'm not too upset
> that Tomcat won't compile it. I can easily fix it by removing the
> trailing tag and making it an empty tag. However, my normal method of
> finding these types of errors is failing me -- my Ant JSP build.
Standard JSPs are not XML. Maybe that's the problem. You should post the
error you're getting, BTW.
> This is my build.xml snippet:
> <jasper2
> uriroot="${install.servlets}"
> webXmlFragment="${root.build}/jspc/generated_web.xml"
> outputDir="${root.build}/jspc"
> package="org.apache.jsp.oculan"
> />
>
> This is the error message I get from Tomcat:
> Expected "param" tag with "name" and "value" attributes
>
> I've started combing through the Jasper code to find what's different
> when compiling inside Tomcat as opposed to inside Ant. I've looked
> through all the top-level Jasper wrappering code that gathers the
> compilation options, but nothing seems significantly different. None of
> the compile options seem to be relevant to this issue.
>
> There must be something going on deeper in the actual JSP compilation
> code. Does anyone have any idea what's happening?
--
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Rémy Maucherat
Senior Developer & Consultant
JBoss Group (Europe) SàRL
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org