Exemple #1
0
  /**
   * Get an instance of JavaCompiler. If Running with JDK 6, use a Jsr199JavaCompiler that supports
   * JSR199, else if eclipse's JDT compiler is available, use that. The default is to use javac from
   * ant.
   */
  private void initJavaCompiler() throws JasperException {
    if (options.getCompilerClassName() != null) {
      Class c = getClassFor(options.getCompilerClassName());
      try {
        javaCompiler = (JavaCompiler) c.newInstance();
      } catch (Exception ex) {
      }
    }
    if (javaCompiler == null) {
      boolean disablejsr199 =
          Boolean.TRUE
              .toString()
              .equals(System.getProperty("org.apache.jasper.compiler.disablejsr199"));
      Double version = Double.valueOf(System.getProperty("java.specification.version"));
      if (!disablejsr199 && (version >= 1.6 || getClassFor("javax.tools.Tool") != null)) {
        // JDK 6 or bundled with jsr199 compiler
        javaCompiler = new Jsr199JavaCompiler();
      } else {
        Class c = getClassFor("org.eclipse.jdt.internal.compiler.Compiler");
        if (c != null) {
          c = getClassFor("org.apache.jasper.compiler.JDTJavaCompiler");
          if (c != null) {
            try {
              javaCompiler = (JavaCompiler) c.newInstance();
            } catch (Exception ex) {
            }
          }
        }
      }
    }
    if (javaCompiler == null) {
      Class c = getClassFor("org.apache.tools.ant.taskdefs.Javac");
      if (c != null) {
        c = getClassFor("org.apache.jasper.compiler.AntJavaCompiler");
        if (c != null) {
          try {
            javaCompiler = (JavaCompiler) c.newInstance();
          } catch (Exception ex) {
          }
        }
      }
    }
    if (javaCompiler == null) {
      errDispatcher.jspError("jsp.error.nojavac");
    }

    javaCompiler.init(ctxt, errDispatcher, jspcMode);
  }