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