You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2003/01/16 22:48:52 UTC

DO NOT REPLY [Bug 12387] - JSP Compilation errors: jars in WEB-INF/lib and classes in WEB-INF/classes not in classpath

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12387>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12387

JSP Compilation errors: jars in WEB-INF/lib and classes in WEB-INF/classes not in classpath

acukiern@yahoo.com.ar changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |
            Version|4.1.10                      |4.1.12



------- Additional Comments From acukiern@yahoo.com.ar  2003-01-16 21:48 -------
Hi.

I've found this problem (the way Martin has described) on 4.1.12 from the exe
distribution on W2K wihtout any Service Pack.
I share he's thought about the offending slash and I also  think i've found the
place in the code where it happens and how to correct it.

Looking deeply inside the code (I am not going to walk thru the full path of
code evaluation I did but I'll go straight to the point) it looks that the
method getServletJavaFileName() of the class
org.apache.jasper.JspCompilationContext is intended primary for achieving
physical file system path names and not virtual site names. The problem shows on
line 333 and line 338 of source file for that class where it checks for leading
slashes (hard-coded), where I understand it should be checking for
system-dependent separator (File.separator).

My guess is that replacing the following lines:

333:            if( outputDir.endsWith("/" ) ) {

338:                servletJavaFileName = outputDir + "/" + servletJavaFileName;

with:

333:            if( outputDir.endsWith("/" ) || outputDir.endWith(
File.separator ) ) {

338:                servletJavaFileName = outputDir + File.separator +
servletJavaFileName;

should solve the problem.

Unfortunly I tried to recompile Tomcat after this changes using the scripts set
provided with source code but I couldn't. So I'm posting this here to see if
someone that agrees with me on this can made those changes and recompile so we
can test them and see if they really solve the problem.

Thanks and hope it helps.

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>