Thanks Costin, iSeries developpers and users are happy to see you fix that damnt HP-UX bugs :)
- Henri Gomez ___[_]____ EMAIL : [EMAIL PROTECTED] (. .) PGP KEY : 697ECEDD ...oOOo..(_)..oOOo... PGP Fingerprint : 9DF8 1EA8 ED53 2F39 DC9B 904A 364F 80E6 >-----Original Message----- >From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] >Sent: Thursday, January 24, 2002 12:59 AM >To: [EMAIL PROTECTED] >Subject: cvs commit: >jakarta-tomcat/src/facade22/org/apache/tomcat/facade >JspInterceptor.java > > >costin 02/01/23 15:58:38 > > Modified: src/facade22/org/apache/tomcat/facade >JspInterceptor.java > Log: > The last patch for the "strange tools.jar" problem. > > We make sure tools.jar is added to the context loader, and >pass it to jasper > ( using the previous patch to make sure no implicit deps are >in the .class and > the right loader is used ) > > This seems to solve the problem, and is certainly more a >robust and controlable > environment. > > Revision Changes Path > 1.36 +77 -18 >jakarta-tomcat/src/facade22/org/apache/tomcat/facade/JspInterce >ptor.java > > Index: JspInterceptor.java > =================================================================== > RCS file: >/home/cvs/jakarta-tomcat/src/facade22/org/apache/tomcat/facade/ >JspInterceptor.java,v > retrieving revision 1.35 > retrieving revision 1.36 > diff -u -r1.35 -r1.36 > --- JspInterceptor.java 9 Jan 2002 06:57:42 -0000 1.35 > +++ JspInterceptor.java 23 Jan 2002 23:58:38 -0000 1.36 > @@ -275,20 +275,45 @@ > ctx.addClassPath( url ); > if( debug > 9 ) log( "Added to classpath: " + url ); > } catch( MalformedURLException ex ) { > + ex.printStackTrace(); > } > - } else if( !ctx.isTrusted() ) { > + } > + > + if( !ctx.isTrusted() ) { > try { > - File f=new File( cm.getInstallDir(), >"lib/container/jasper.jar" ); > + File f=new File( cm.getInstallDir(), > + "lib/container/jasper.jar" ); > URL url=new URL( "file", null, > - f.getAbsolutePath().replace('\\','/') ); > - ctx.addClassPath( url ); > - if( debug > 9 ) log( "Added to classpath: " + url ); > - url=new URL( "file", "" , > - System.getProperty( "java.home" ) + >"/../lib/tools.jar"); > + >f.getAbsolutePath().replace('\\','/') ); > ctx.addClassPath( url ); > if( debug > 9 ) log( "Added to classpath: " + url ); > } catch( MalformedURLException ex ) { > - } > + ex.printStackTrace(); > + } > + } > + > + // Add tools.jar in any case > + try { > + File f=new File( System.getProperty( "java.home" ) + > + "/../lib/tools.jar"); > + if( ! f.exists() ) { > + // On some systems java.home gets set to >the root of jdk. > + // That's a bug, but we can work around and be nice. > + f=new File( System.getProperty( "java.home" ) + > + "/lib/tools.jar"); > + if( ! f.exists() ) { > + log("Tools.jar not found " + > + System.getProperty( "java.home" )); > + } else { > + log("Detected wrong java.home value " + > + System.getProperty( "java.home" )); > + } > + } > + URL url=new URL( "file", "" , f.getAbsolutePath() ); > + ctx.addClassPath( url ); > + if( debug > 9 ) log( "Added to classpath: " + url ); > + } catch( MalformedURLException ex ) { > + ex.printStackTrace(); > } > } > > @@ -335,6 +360,14 @@ > } else { > ctx.addServlet( new JspPrecompileH()); > } > + > + //Extra test/warnings for tools.jar > + try { > + ctx.getClassLoader().loadClass( >"sun.tools.javac.Main" ); > + if( debug>0) log( "Found javac in context init"); > + } catch( ClassNotFoundException ex ) { > + if( debug>0) log( "javac not found in context init"); > + } > } > > /** Set the HttpJspBase classloader before init, > @@ -652,11 +685,31 @@ > log.log( "Update class Name " + >mangler.getServletClassName()); > handler.setServletClassName( >mangler.getServletClassName() ); > > - // May be called from include, we need to set the >context class loader > + // May be called from include, we need to set the >context class > + // loader > // for jaxp1.1 to work using the container class loader > - ClassLoader savedContextCL= containerCCL( >ctx.getContextManager() > - >.getContainerLoader() ); > - > + //Extra test/warnings for tools.jar > + > + ClassLoader savedContextCL= containerCCL( >ctx.getContextManager() > + >.getContainerLoader() ); > + > + try { > + ctx.getClassLoader().loadClass( >"sun.tools.javac.Main" ); > + if(debug>0) log.log( "Found javac using >context loader"); > + } catch( ClassNotFoundException ex ) { > + if(debug>0) log.log( "javac not found using >context loader"); > + } > + > + try { > + ctx.getContextManager().getContainerLoader(). > + loadClass( "sun.tools.javac.Main" ); > + if( debug > 0 ) > + log.log( "Found javac using container loader"); > + } catch( ClassNotFoundException ex ) { > + if( debug > 0 ) > + log.log( "javac not found using >container loader"); > + } > + > try { > Options options=new JasperOptionsImpl(args); > JspCompilationContext ctxt=createCompilationContext(req, > @@ -665,7 +718,7 @@ > > mangler); > jsp2java( mangler, ctxt ); > > - javac( options, ctxt, mangler ); > + javac( req, options, ctxt, mangler ); > > if(debug>0)log.log( "Generated " + > mangler.getClassFileName() ); > @@ -734,7 +787,8 @@ > String javaEncoding = "UTF8"; // perhaps debatable? > static String sep = System.getProperty("path.separator"); > > - private void prepareCompiler( JavaCompiler javac, > + private void prepareCompiler( Request req, > + JavaCompiler javac, > Options options, > JspCompilationContext ctxt ) > throws JasperException > @@ -763,6 +817,11 @@ > javac.setClasspath( cp ); > javac.setOutputDir(ctxt.getOutputDir()); > > + if( javac instanceof SunJavaCompiler ) { > + ClassLoader cl=req.getContext().getClassLoader(); > + ((SunJavaCompiler)javac).setLoader( cl ); > + } > + > if( debug>5) log.log( "ClassPath " + cp); > } > > @@ -773,7 +832,7 @@ > with JavaCompiler - it's a general purpose code, no need to > keep it part of jasper > */ > - void javac(Options options, JspCompilationContext ctxt, > + void javac(Request req, Options options, >JspCompilationContext ctxt, > Mangler mangler) > throws JasperException > { > @@ -793,7 +852,7 @@ > >forName("org.apache.jasper.compiler.JikesJavaCompiler"); > JavaCompiler javaC=createJavaCompiler( >jspCompilerPlugin ); > > - prepareCompiler( javaC, options, ctxt ); > + prepareCompiler( req, javaC, options, ctxt ); > javaC.setMsgOutput(out); > status = javaC.compile(javaFileName); > } catch( Exception ex ) { > @@ -811,10 +870,10 @@ > } > > JavaCompiler javaC=createJavaCompiler( jspCompilerPlugin ); > - prepareCompiler( javaC, options, ctxt ); > + prepareCompiler( req, javaC, options, ctxt ); > ByteArrayOutputStream out = new ByteArrayOutputStream (256); > javaC.setMsgOutput(out); > - > + > status = javaC.compile(javaFileName); > > if (!ctxt.keepGenerated()) { > > > > >-- >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>