|
What this is
Other links
The source code/* * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/SunJavaCompiler.java,v 1.6 2004/02/23 06:22:36 billbarker Exp $ * $Revision: 1.6 $ * $Date: 2004/02/23 06:22:36 $ * * * Copyright 1999-2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jasper.compiler; import java.io.OutputStream; import java.lang.reflect.Constructor; import java.lang.reflect.Method; /** * The default compiler. This is the javac present in JDK 1.1.x and * JDK 1.2. * * At some point we need to make sure there is a class like this for * JDK 1.3, and other javac-like animals that people want to use. * * @author Anil K. Vijendran */ public class SunJavaCompiler implements JavaCompiler { String encoding; String classpath; // ignored String compilerPath; String outdir; OutputStream out; boolean classDebugInfo=false; /** * Specify where the compiler can be found */ public void setCompilerPath(String compilerPath) { // not used by the SunJavaCompiler this.compilerPath = compilerPath; } /** * Set the encoding (character set) of the source */ public void setEncoding(String encoding) { this.encoding = encoding; } /** * Set the class path for the compiler */ public void setClasspath(String classpath) { this.classpath = classpath; } /** * Set the output directory */ public void setOutputDir(String outdir) { this.outdir = outdir; } /** * Set where you want the compiler output (messages) to go */ public void setMsgOutput(OutputStream out) { this.out = out; } /** * Set where you want the compiler output (messages) to go */ public void setOut(OutputStream out) { this.out = out; } /** * Set if you want debugging information in the class file */ public void setClassDebugInfo(boolean classDebugInfo) { this.classDebugInfo = classDebugInfo; } ClassLoader loader=null; public void setLoader( ClassLoader cl ) { loader=cl; } public boolean compile(String source) { try { Class c; if( loader==null ) c = Class.forName("sun.tools.javac.Main"); else c=loader.loadClass("sun.tools.javac.Main"); Constructor cons = c.getConstructor(new Class[] { OutputStream.class, String.class }); Object compiler = cons.newInstance(new Object[] { out, "jsp->javac" }); // Call the compile() method Method compile = c.getMethod("compile", new Class [] { String[].class }); String[] args; if (classDebugInfo) { args = new String[] { "-g", "-encoding", encoding, "-classpath", classpath, "-d", outdir, source }; } else { args = new String[] { "-encoding", encoding, "-classpath", classpath, "-d", outdir, source }; } Boolean ok = (Boolean)compile.invoke(compiler, new Object[] {args}); return ok.booleanValue(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); return false; } catch (Exception ex1) { ex1.printStackTrace(); return false; } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.