You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Thomas Riemer <to...@58k.com> on 2001/03/18 05:32:55 UTC
Jikes Compiler Patch
Here's a patch to fix the jikes compiler code in Jasper - against tomcat 3.3 m2
It looks like there is something OS specific in the original code. Its not clear to me that my fix
would work under all platforms. I'll leave that to greater minds.
It looks like under some OS, extra quotes are put around each argument. I don't know what
OS would that be - it should fail under every OS I'm familiar with... But that is the only explanation
that I have for the extra quotes.
Under linux, the original code fails. I imagine it would fail under most other UNIX systems.
Hope someone can make some sense of this. Using jikes has been a significant performance improvement
for us. The javac compiler has a remarkably high initialization hit - something jikes has successfully
minimized.
Have Fun,
-Tom
--- jakarta-tomcat/src/share/org/apache/jasper/compiler/JikesJavaCompiler.java Sun Jan 14 15:45:40 2001
+++ jakarta-tomcat-new/src/share/org/apache/jasper/compiler/JikesJavaCompiler.java Sat Mar 17 23:20:41 2001
@@ -67,6 +67,7 @@
import java.io.File;
import java.io.ByteArrayOutputStream;
+
/**
* A Plug-in class for specifying a 'jikes' compile.
*
@@ -88,7 +89,7 @@
String encoding;
String classpath;
- String compilerPath = "jikes";
+ String compilerPath = "/usr/local/java/jikes-1.13/bin/jikes";
String outdir;
OutputStream out;
boolean classDebugInfo=false;
@@ -161,26 +162,27 @@
String[] compilerCmd;
if (classDebugInfo) {
- compilerCmd = new String[] {
- "\"" + compilerPath + "\"",
- "-g",
- //XXX - add encoding once Jikes supports it
- "-classpath", "\"" + classpath + MicrosoftClasspath + "\"",
- "-d", "\"" + outdir + "\"",
- "-nowarn",
- "\"" + source + "\""
- };
+ compilerCmd = new String[] {
+ compilerPath,
+ "-g",
+ //XXX - add encoding once Jikes supports it
+ "-classpath", classpath,
+ "-d", outdir,
+ "-nowarn",
+ source
+ };
} else {
- compilerCmd = new String[] {
- "\"" + compilerPath + "\"",
- //XXX - add encoding once Jikes supports it
- "-classpath", "\"" + classpath + MicrosoftClasspath + "\"",
- "-d", "\"" + outdir + "\"",
- "-nowarn",
- "\"" + source + "\""
- };
+ compilerCmd = new String[] {
+ compilerPath,
+ "-encoding", "UTF8",
+ "-classpath", classpath,
+ "-d", outdir,
+ "-nowarn",
+ source
+ };
}
+
ByteArrayOutputStream tmpErr = new ByteArrayOutputStream(OUTPUT_BUFFER_SIZE);
try {
p = Runtime.getRuntime().exec(compilerCmd);
@@ -198,7 +200,6 @@
// Wait until the complete error stream has been read
errPumper.join();
compilerErr.close();
-
p.destroy();
// Write the compiler error messages, if any, to the real stream
@@ -218,6 +219,7 @@
if (tmpErr.size() > 0) {
isOkay = false;
}
+
return isOkay;
}