first commit

This commit is contained in:
2025-07-28 13:56:49 +05:30
commit e9eb805edb
3438 changed files with 520990 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
package net.sf.jasperreports.engine.design;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.util.JRClassLoader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class JRJdk13Compiler extends JRAbstractMultiClassCompiler {
static final Log log = LogFactory.getLog(JRJdk13Compiler.class);
private static final int MODERN_COMPILER_SUCCESS = 0;
static Class array$Ljava$lang$String;
public String compileClasses(File[] sourceFiles, String classpath) throws JRException {
String[] source = new String[sourceFiles.length + 2];
for (int i = 0; i < sourceFiles.length; i++)
source[i] = sourceFiles[i].getPath();
source[sourceFiles.length] = "-classpath";
source[sourceFiles.length + 1] = classpath;
String errors = null;
try {
Class clazz = JRClassLoader.loadClassForRealName("com.sun.tools.javac.Main");
Object compiler = clazz.newInstance();
try {
Method compileMethod = clazz.getMethod("compile", new Class[] { (array$Ljava$lang$String == null) ? (array$Ljava$lang$String = class$("[Ljava.lang.String;")) : array$Ljava$lang$String, PrintWriter.class });
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int result = ((Integer)compileMethod.invoke(compiler, new Object[] { source, new PrintWriter(baos) })).intValue();
if (result != 0) {
errors = baos.toString();
} else if (log.isInfoEnabled() && baos.size() > 0) {
log.info(baos.toString());
}
} catch (NoSuchMethodException ex) {
Method compileMethod = clazz.getMethod("compile", new Class[] { (array$Ljava$lang$String == null) ? (array$Ljava$lang$String = class$("[Ljava.lang.String;")) : array$Ljava$lang$String });
int result = ((Integer)compileMethod.invoke(compiler, new Object[] { source })).intValue();
if (result != 0)
errors = "See error messages above.";
}
} catch (Exception e) {
StringBuffer files = new StringBuffer();
for (int j = 0; j < sourceFiles.length; j++) {
files.append(sourceFiles[j].getPath());
files.append(' ');
}
throw new JRException("Error compiling report java source files : " + files, e);
}
return errors;
}
}