# Class JspC

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.jasper.JspC

All Implemented Interfaces:
  `Cloneable`, `Options`

public class JspC extends org.apache.tools.ant.Task implements Options
Shell for the jspc compiler. Handles all options associated with the command line and creates compilation contexts which it then compiles according to the specified options. This version can process files from a _single_ webapp at once, i.e. a single docbase can be specified. It can be used as an Ant task using:

       <taskdef classname="org.apache.jasper.JspC" name="jasper" >
          <classpath>
              <pathelement location="${java.home}/../lib/tools.jar"/>
              <fileset dir="${ENV.CATALINA_HOME}/lib">
                  <include name="*.jar"/>
              </fileset>
              <path refid="myjars"/>
           </classpath>
      </taskdef>

      <jasper verbose="0"
               package="my.package"
               uriroot="${webapps.dir}/${webapp.name}"
               webXmlFragment="${build.dir}/generated_web.xml"
               outputDir="${webapp.dir}/${webapp.name}/WEB-INF/src/my/package" />

Author:
  Danno Ferrin, Pierre Delisle, Costin Manolache, Yoav Shapira

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `addWebXmlMappings`
  `protected static final int`
  `ALL_WEBXML`
  `protected int`
  `argPos`
  `protected String[]`
  `args`
  `protected boolean`
  `blockExternal`
  `protected final Map<String, TagLibraryInfo>`
  `cache`
  `protected boolean`
  `caching`
  `protected boolean`
  `classDebugInfo`
  `protected String`
  `classPath`
  `protected boolean`
  `compile`
  `protected String`
  `compiler`
  `protected String`
  `compilerSourceVM`
  `protected String`
  `compilerTargetVM`
  `protected JspCServletContext`
  `context`
  The servlet context.
  `protected static final int`
  `DEFAULT_DIE_LEVEL`
  `static final String`
  `DEFAULT_IE_CLASS_ID`
  Deprecated.
  `protected int`
  `dieLevel`
  `protected boolean`
  `errorOnUseBeanInvalidClassAttribute`
  Needs better documentation, this data member does.
  `protected List<String>`
  `extensions`
  The file extensions to be handled as JSP files.
  `protected boolean`
  `failFast`
  `protected boolean`
  `failOnError`
  Throw an exception if there's a compilation error, or swallow it.
  `protected static final int`
  `FRG_WEBXML`
  `protected boolean`
  `fullstop`
  `protected boolean`
  `genStringAsCharArray`
  `protected boolean`
  `helpNeeded`
  `protected String`
  `ieClassId`
  `protected static final int`
  `INC_WEBXML`
  `protected static final Set<String>`
  `insertBefore`
  `protected String`
  `javaEncoding`
  The java file encoding.
  `protected JspConfig`
  `jspConfig`
  `protected static final String`
  `LIST_ERRORS`
  `protected boolean`
  `listErrors`
  `protected ClassLoader`
  `loader`
  `protected Writer`
  `mapout`
  `protected boolean`
  `mappedFile`
  `protected CharArrayWriter`
  `mappingout`
  `protected static final int`
  `NO_DIE_LEVEL`
  `protected final List<String>`
  `pages`
  The pages.
  `protected boolean`
  `poolingEnabled`
  `protected boolean`
  `quoteAttributeEL`
  `protected JspRuntimeContext`
  `rctxt`
  The runtime context.
  `protected TldScanner`
  `scanner`
  `protected File`
  `scratchDir`
  `protected CharArrayWriter`
  `servletout`
  `protected static final String`
  `SHOW_SUCCESS`
  `protected boolean`
  `showSuccess`
  `protected boolean`
  `smapDumped`
  `protected boolean`
  `smapSuppressed`
  `protected boolean`
  `strictQuoteEscaping`
  `protected static final String`
  `SWITCH_ADD_WEBAPP_XML_MAPPINGS`
  `protected static final String`
  `SWITCH_CACHE`
  `protected static final String`
  `SWITCH_CLASS_NAME`
  `protected static final String`
  `SWITCH_CLASSPATH`
  `protected static final String`
  `SWITCH_COMPILE`
  `protected static final String`
  `SWITCH_DIE`
  `protected static final String`
  `SWITCH_DUMP_SMAP`
  `protected static final String`
  `SWITCH_ENCODING`
  `protected static final String`
  `SWITCH_FAIL_FAST`
  `protected static final String`
  `SWITCH_FILE_WEBAPP`
  `protected static final String`
  `SWITCH_FULL_STOP`
  `protected static final String`
  `SWITCH_HELP`
  `protected static final String`
  `SWITCH_MAPPED`
  `protected static final String`
  `SWITCH_NO_BLOCK_EXTERNAL`
  `protected static final String`
  `SWITCH_NO_QUOTE_ATTRIBUTE_EL`
  `protected static final String`
  `SWITCH_NO_STRICT_QUOTE_ESCAPING`
  `protected static final String`
  `SWITCH_OUTPUT_DIR`
  `protected static final String`
  `SWITCH_PACKAGE_NAME`
  `protected static final String`
  `SWITCH_POOLING`
  `protected static final String`
  `SWITCH_QUOTE_ATTRIBUTE_EL`
  `protected static final String`
  `SWITCH_SMAP`
  `protected static final String`
  `SWITCH_SOURCE`
  `protected static final String`
  `SWITCH_TARGET`
  `protected static final String`
  `SWITCH_THREAD_COUNT`
  `protected static final String`
  `SWITCH_TRIM_SPACES`
  `protected static final String`
  `SWITCH_URI_BASE`
  `protected static final String`
  `SWITCH_URI_ROOT`
  `protected static final String`
  `SWITCH_USENONSTANDARD_TAG_OPTIMIZATIONS`
  `protected static final String`
  `SWITCH_VALIDATE_TLD`
  `protected static final String`
  `SWITCH_VALIDATE_XML`
  `protected static final String`
  `SWITCH_VERBOSE`
  `protected static final String`
  `SWITCH_WEBAPP_FRG`
  `protected static final String`
  `SWITCH_WEBAPP_INC`
  `protected static final String`
  `SWITCH_WEBAPP_XML`
  `protected static final String`
  `SWITCH_WEBAPP_XML_ENCODING`
  `protected static final String`
  `SWITCH_XPOWERED_BY`
  `protected TagPluginManager`
  `tagPluginManager`
  `protected String`
  `targetClassName`
  `protected String`
  `targetPackage`
  `protected int`
  `threadCount`
  The number of threads to use; default is one per core
  `protected TldCache`
  `tldCache`
  Cache for the TLD locations
  `protected TrimSpacesOption`
  `trimSpaces`
  `protected String`
  `uriBase`
  `protected String`
  `uriRoot`
  `protected String`
  `useNonstandardTagOptimizations`
  `protected boolean`
  `validateTld`
  `protected boolean`
  `validateXml`
  `protected boolean`
  `verbose`
  `protected String`
  `webxmlEncoding`
  `protected String`
  `webxmlFile`
  `protected int`
  `webxmlLevel`
  `protected boolean`
  `xpoweredBy`

  ### Fields inherited from class org.apache.tools.ant.Task

  `target, taskName, taskType, wrapper`

  ### Fields inherited from class org.apache.tools.ant.ProjectComponent

  `description, location, project`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JspC()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `addExtension(String extension)`
  Adds the given file extension to the list of extensions handled as JSP files.
  `protected void`
  `completeWebXml()`
  `void`
  `execute()`
  Executes the compilation.
  `void`
  `generateWebMapping(String file, JspCompilationContext clctxt)`
  Adds servlet declaration and mapping for the JSP page servlet to the generated web.xml fragment.
  `boolean`
  `genStringAsCharArray()`
  Indicates whether text strings are to be generated as char arrays.
  `Map<String, TagLibraryInfo>`
  `getCache()`
  The web-application wide cache for the TagLibraryInfo tag library descriptors, used if `Options.isCaching()` returns `true`.
  `int`
  `getCheckInterval()`
  In JspC this always returns `0`.
  `boolean`
  `getClassDebugInfo()`
  `String`
  `getClassPath()`
  `String`
  `getCompiler()`
  Compiler to use.
  `String`
  `getCompilerClassName()`
  `String`
  `getCompilerSourceVM()`
  `String`
  `getCompilerTargetVM()`
  `boolean`
  `getDevelopment()`
  In JspC this always returns `false`.
  `boolean`
  `getDisplaySourceFragment()`
  In JspC this always returns `true`.
  `boolean`
  `getErrorOnUseBeanInvalidClassAttribute()`
  Returns true if Jasper issues a compilation error instead of a runtime Instantiation error if the class attribute specified in useBean action is invalid.
  `List<String>`
  `getExtensions()`
  Returns the list of file extensions that are treated as JSP files.
  `boolean`
  `getFailOnError()`
  `boolean`
  `getFork()`
  The boolean flag to tell Ant whether to fork JSP page compilations.
  `boolean`
  `getGeneratedJavaAddTimestamp()`
  Should the container include the time the file was generated in the comments at the start of a Java file generated from a JSP or tag.
  `String`
  `getIeClassId()`
  Deprecated.
  `String`
  `getJavaEncoding()`
  Returns the encoding to use for java files.
  `JspConfig`
  `getJspConfig()`
  `int`
  `getJspIdleTimeout()`
  `boolean`
  `getKeepGenerated()`
  In JspC this always returns `true`.
  `boolean`
  `getMappedFile()`
  `int`
  `getMaxLoadedJsps()`
  The maximum number of loaded jsps per web-application.
  `int`
  `getModificationTestInterval()`
  In JspC this always returns `0`.
  `boolean`
  `getQuoteAttributeEL()`
  `boolean`
  `getRecompileOnFail()`
  In JspC this always returns `false`.
  `File`
  `getScratchDir()`
  `boolean`
  `getStrictQuoteEscaping()`
  `TagPluginManager`
  `getTagPluginManager()`
  `int`
  `getThreadCount()`
  `TldCache`
  `getTldCache()`
  The cache that maps URIs, resource paths and parsed TLD files for the various tag libraries 'exposed' by the web application.
  `TrimSpacesOption`
  `getTrimSpaces()`
  `String`
  `getUseNonstandardTagOptimizations()`
  A string containing a comma-separated list of names to which custom tag implementations should be applied.
  `protected ClassLoader`
  `initClassLoader()`
  Initializes the classloader as/if needed for the given compilation context.
  `protected void`
  `initServletContext(ClassLoader classLoader)`
  `protected void`
  `initTldScanner(JspCServletContext context, ClassLoader classLoader)`
  `protected void`
  `initWebXml()`
  `boolean`
  `isBlockExternal()`
  `boolean`
  `isCaching()`
  `boolean`
  `isPoolingEnabled()`
  `boolean`
  `isSmapDumped()`
  This setting is ignored if suppressSmap() is `true`.
  `boolean`
  `isSmapSuppressed()`
  `boolean`
  `isValidateTld()`
  `boolean`
  `isValidateXml()`
  `boolean`
  `isXpoweredBy()`
  `protected void`
  `locateUriRoot(File f)`
  Find the WEB-INF dir by looking up in the directory tree.
  `static void`
  `main(String[] arg)`
  `protected void`
  `mergeIntoWebXml()`
  Include the generated web.xml inside the webapp's web.xml.
  `protected TldScanner`
  `newTldScanner(JspCServletContext context, boolean namespaceAware, boolean validate, boolean blockExternal)`
  `protected String`
  `nextArg()`
  `protected String`
  `nextFile()`
  `protected void`
  `processFile(String file)`
  `protected File`
  `resolveFile(String s)`
  Resolves the relative or absolute pathname correctly in both Ant and command-line situations.
  `void`
  `scanFiles()`
  Locate all jsp files in the webapp.
  `void`
  `scanFiles(File base)`
  Deprecated.
  This will be removed in Tomcat 10.
  `void`
  `setAddWebXmlMappings(boolean b)`
  Sets the option to merge generated web.xml fragment into the WEB-INF/web.xml file of the web application that we were processing.
  `void`
  `setArgs(String[] arg)`
  Apply command-line arguments.
  `void`
  `setBlockExternal(boolean b)`
  `void`
  `setCaching(boolean caching)`
  Sets the option to enable caching.
  `void`
  `setClassDebugInfo(boolean b)`
  Sets the option to include debug information in compiled class.
  `void`
  `setClassName(String p)`
  Class name of the generated file ( without package ).
  `void`
  `setClassPath(String s)`
  Sets the classpath used while compiling the servlets generated from JSP files
  `void`
  `setCompile(boolean b)`
  Sets the compile flag.
  `void`
  `setCompiler(String c)`
  Sets the option to determine what compiler to use.
  `void`
  `setCompilerSourceVM(String vm)`
  Sets the compiler source VM.
  `void`
  `setCompilerTargetVM(String vm)`
  Sets the compiler target VM.
  `void`
  `setErrorOnUseBeanInvalidClassAttribute(boolean b)`
  Sets the option to issue a compilation error if the class attribute specified in useBean action is invalid.
  `void`
  `setFailOnError(boolean b)`
  Sets the option that throws an exception in case of a compilation error.
  `void`
  `setFork(boolean fork)`
  `void`
  `setGenStringAsCharArray(boolean genStringAsCharArray)`
  Determines whether text strings are to be generated as char arrays, which improves performance in some cases.
  `void`
  `setIeClassId(String ieClassId)`
  Deprecated.
  Will be removed in Tomcat 10.1
  `void`
  `setJavaEncoding(String encodingName)`
  Sets the encoding to use for java files.
  `void`
  `setJspFiles(String jspFiles)`
  Parses comma-separated list of JSP files to be processed.
  `void`
  `setListErrors(boolean b)`
  `void`
  `setMappedFile(boolean b)`
  `void`
  `setOutputDir(String s)`
  `void`
  `setPackage(String p)`
  Sets the package name to be used for the generated servlet classes.
  `void`
  `setPoolingEnabled(boolean poolingEnabled)`
  Sets the option to enable the tag handler pooling.
  `void`
  `setQuoteAttributeEL(boolean b)`
  `void`
  `setSmapDumped(boolean smapDumped)`
  Sets smapDumped flag.
  `void`
  `setSmapSuppressed(boolean smapSuppressed)`
  Sets smapSuppressed flag.
  `void`
  `setStrictQuoteEscaping(boolean b)`
  `void`
  `setThreadCount(String threadCount)`
  `void`
  `setTrimSpaces(boolean trimSpaces)`
  `void`
  `setTrimSpaces(String ts)`
  Sets the option to control handling of template text that consists entirely of whitespace.
  `void`
  `setTrimSpaces(TrimSpacesOption trimSpaces)`
  `void`
  `setUriroot(String s)`
  Base dir for the webapp.
  `void`
  `setUseNonstandardTagOptimizations(String useNonstandardTagOptimizations)`
  Sets the set of custom tags to use nonstandard optimizations.
  `void`
  `setValidateTld(boolean b)`
  `void`
  `setValidateXml(boolean b)`
  `void`
  `setVerbose(int level)`
  Sets the verbosity level.
  `void`
  `setWebFragmentXml(String s)`
  File where we generate a complete web-fragment.xml with the class definitions.
  `void`
  `setWebXml(String s)`
  File where we generate a complete web.xml with the class definitions.
  `void`
  `setWebXmlEncoding(String encoding)`
  Sets the encoding to be used to read and write web.xml files.
  `void`
  `setWebXmlFragment(String s)`
  Deprecated.
  Will be removed in Tomcat 10.
  `void`
  `setWebXmlInclude(String s)`
  File where we generate configuration with the class definitions to be included in a web.xml file.
  `void`
  `setXpoweredBy(boolean xpoweredBy)`
  Sets the option to enable generation of X-Powered-By response header.

  ### Methods inherited from class org.apache.tools.ant.Task

  `bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

  ### Methods inherited from class org.apache.tools.ant.ProjectComponent

  `clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

  ### Methods inherited from class java.lang.Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### DEFAULT_IE_CLASS_ID

    @Deprecated public static final String DEFAULT_IE_CLASS_ID
    Deprecated.
    See Also:
      - Constant Field Values

  - ### SWITCH_VERBOSE

    protected static final String SWITCH_VERBOSE
    See Also:
      - Constant Field Values

  - ### SWITCH_HELP

    protected static final String SWITCH_HELP
    See Also:
      - Constant Field Values

  - ### SWITCH_OUTPUT_DIR

    protected static final String SWITCH_OUTPUT_DIR
    See Also:
      - Constant Field Values

  - ### SWITCH_PACKAGE_NAME

    protected static final String SWITCH_PACKAGE_NAME
    See Also:
      - Constant Field Values

  - ### SWITCH_CACHE

    protected static final String SWITCH_CACHE
    See Also:
      - Constant Field Values

  - ### SWITCH_CLASS_NAME

    protected static final String SWITCH_CLASS_NAME
    See Also:
      - Constant Field Values

  - ### SWITCH_FULL_STOP

    protected static final String SWITCH_FULL_STOP
    See Also:
      - Constant Field Values

  - ### SWITCH_COMPILE

    protected static final String SWITCH_COMPILE
    See Also:
      - Constant Field Values

  - ### SWITCH_FAIL_FAST

    protected static final String SWITCH_FAIL_FAST
    See Also:
      - Constant Field Values

  - ### SWITCH_SOURCE

    protected static final String SWITCH_SOURCE
    See Also:
      - Constant Field Values

  - ### SWITCH_TARGET

    protected static final String SWITCH_TARGET
    See Also:
      - Constant Field Values

  - ### SWITCH_URI_BASE

    protected static final String SWITCH_URI_BASE
    See Also:
      - Constant Field Values

  - ### SWITCH_URI_ROOT

    protected static final String SWITCH_URI_ROOT
    See Also:
      - Constant Field Values

  - ### SWITCH_FILE_WEBAPP

    protected static final String SWITCH_FILE_WEBAPP
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_INC

    protected static final String SWITCH_WEBAPP_INC
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_FRG

    protected static final String SWITCH_WEBAPP_FRG
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_XML

    protected static final String SWITCH_WEBAPP_XML
    See Also:
      - Constant Field Values

  - ### SWITCH_WEBAPP_XML_ENCODING

    protected static final String SWITCH_WEBAPP_XML_ENCODING
    See Also:
      - Constant Field Values

  - ### SWITCH_ADD_WEBAPP_XML_MAPPINGS

    protected static final String SWITCH_ADD_WEBAPP_XML_MAPPINGS
    See Also:
      - Constant Field Values

  - ### SWITCH_MAPPED

    protected static final String SWITCH_MAPPED
    See Also:
      - Constant Field Values

  - ### SWITCH_XPOWERED_BY

    protected static final String SWITCH_XPOWERED_BY
    See Also:
      - Constant Field Values

  - ### SWITCH_TRIM_SPACES

    protected static final String SWITCH_TRIM_SPACES
    See Also:
      - Constant Field Values

  - ### SWITCH_CLASSPATH

    protected static final String SWITCH_CLASSPATH
    See Also:
      - Constant Field Values

  - ### SWITCH_DIE

    protected static final String SWITCH_DIE
    See Also:
      - Constant Field Values

  - ### SWITCH_POOLING

    protected static final String SWITCH_POOLING
    See Also:
      - Constant Field Values

  - ### SWITCH_ENCODING

    protected static final String SWITCH_ENCODING
    See Also:
      - Constant Field Values

  - ### SWITCH_SMAP

    protected static final String SWITCH_SMAP
    See Also:
      - Constant Field Values

  - ### SWITCH_DUMP_SMAP

    protected static final String SWITCH_DUMP_SMAP
    See Also:
      - Constant Field Values

  - ### SWITCH_VALIDATE_TLD

    protected static final String SWITCH_VALIDATE_TLD
    See Also:
      - Constant Field Values

  - ### SWITCH_VALIDATE_XML

    protected static final String SWITCH_VALIDATE_XML
    See Also:
      - Constant Field Values

  - ### SWITCH_NO_BLOCK_EXTERNAL

    protected static final String SWITCH_NO_BLOCK_EXTERNAL
    See Also:
      - Constant Field Values

  - ### SWITCH_NO_STRICT_QUOTE_ESCAPING

    protected static final String SWITCH_NO_STRICT_QUOTE_ESCAPING
    See Also:
      - Constant Field Values

  - ### SWITCH_QUOTE_ATTRIBUTE_EL

    protected static final String SWITCH_QUOTE_ATTRIBUTE_EL
    See Also:
      - Constant Field Values

  - ### SWITCH_NO_QUOTE_ATTRIBUTE_EL

    protected static final String SWITCH_NO_QUOTE_ATTRIBUTE_EL
    See Also:
      - Constant Field Values

  - ### SWITCH_THREAD_COUNT

    protected static final String SWITCH_THREAD_COUNT
    See Also:
      - Constant Field Values

  - ### SWITCH_USENONSTANDARD_TAG_OPTIMIZATIONS

    protected static final String SWITCH_USENONSTANDARD_TAG_OPTIMIZATIONS
    See Also:
      - Constant Field Values

  - ### SHOW_SUCCESS

    protected static final String SHOW_SUCCESS
    See Also:
      - Constant Field Values

  - ### LIST_ERRORS

    protected static final String LIST_ERRORS
    See Also:
      - Constant Field Values

  - ### INC_WEBXML

    protected static final int INC_WEBXML
    See Also:
      - Constant Field Values

  - ### FRG_WEBXML

    protected static final int FRG_WEBXML
    See Also:
      - Constant Field Values

  - ### ALL_WEBXML

    protected static final int ALL_WEBXML
    See Also:
      - Constant Field Values

  - ### DEFAULT_DIE_LEVEL

    protected static final int DEFAULT_DIE_LEVEL
    See Also:
      - Constant Field Values

  - ### NO_DIE_LEVEL

    protected static final int NO_DIE_LEVEL
    See Also:
      - Constant Field Values

  - ### insertBefore

    protected static final Set<String> insertBefore

  - ### classPath

    protected String classPath

  - ### loader

    protected ClassLoader loader

  - ### trimSpaces

    protected TrimSpacesOption trimSpaces

  - ### genStringAsCharArray

    protected boolean genStringAsCharArray

  - ### validateTld

    protected boolean validateTld

  - ### validateXml

    protected boolean validateXml

  - ### blockExternal

    protected boolean blockExternal

  - ### strictQuoteEscaping

    protected boolean strictQuoteEscaping

  - ### quoteAttributeEL

    protected boolean quoteAttributeEL

  - ### xpoweredBy

    protected boolean xpoweredBy

  - ### mappedFile

    protected boolean mappedFile

  - ### poolingEnabled

    protected boolean poolingEnabled

  - ### scratchDir

    protected File scratchDir

  - ### ieClassId

    protected String ieClassId

  - ### targetPackage

    protected String targetPackage

  - ### targetClassName

    protected String targetClassName

  - ### uriBase

    protected String uriBase

  - ### uriRoot

    protected String uriRoot

  - ### dieLevel

    protected int dieLevel

  - ### helpNeeded

    protected boolean helpNeeded

  - ### compile

    protected boolean compile

  - ### failFast

    protected boolean failFast

  - ### smapSuppressed

    protected boolean smapSuppressed

  - ### smapDumped

    protected boolean smapDumped

  - ### caching

    protected boolean caching

  - ### cache

    protected final Map<String, TagLibraryInfo> cache

  - ### compiler

    protected String compiler

  - ### compilerTargetVM

    protected String compilerTargetVM

  - ### compilerSourceVM

    protected String compilerSourceVM

  - ### classDebugInfo

    protected boolean classDebugInfo

  - ### failOnError

    protected boolean failOnError
    Throw an exception if there's a compilation error, or swallow it. Default is true to preserve old behavior.

  - ### extensions

    protected List<String> extensions
    The file extensions to be handled as JSP files. Default list is .jsp and .jspx.

  - ### pages

    protected final List<String> pages
    The pages.

  - ### errorOnUseBeanInvalidClassAttribute

    protected boolean errorOnUseBeanInvalidClassAttribute
    Needs better documentation, this data member does. True by default.

  - ### javaEncoding

    protected String javaEncoding
    The java file encoding. Default is UTF-8. Added per bugzilla 19622.

  - ### threadCount

    protected int threadCount
    The number of threads to use; default is one per core

  - ### webxmlFile

    protected String webxmlFile

  - ### webxmlLevel

    protected int webxmlLevel

  - ### webxmlEncoding

    protected String webxmlEncoding

  - ### addWebXmlMappings

    protected boolean addWebXmlMappings

  - ### mapout

    protected Writer mapout

  - ### servletout

    protected CharArrayWriter servletout

  - ### mappingout

    protected CharArrayWriter mappingout

  - ### context

    protected JspCServletContext context
    The servlet context.

  - ### rctxt

    protected JspRuntimeContext rctxt
    The runtime context. Maintain a dummy JspRuntimeContext for compiling tag files.

  - ### tldCache

    protected TldCache tldCache
    Cache for the TLD locations

  - ### jspConfig

    protected JspConfig jspConfig

  - ### tagPluginManager

    protected TagPluginManager tagPluginManager

  - ### scanner

    protected TldScanner scanner

  - ### verbose

    protected boolean verbose

  - ### listErrors

    protected boolean listErrors

  - ### showSuccess

    protected boolean showSuccess

  - ### argPos

    protected int argPos

  - ### fullstop

    protected boolean fullstop

  - ### args

    protected String[] args

  - ### useNonstandardTagOptimizations

    protected String useNonstandardTagOptimizations

- ## Constructor Details

  - ### JspC

    public JspC()

- ## Method Details

  - ### main

    public static void main(String[] arg)

  - ### setArgs

    public void setArgs(String[] arg) throws JasperException
    Apply command-line arguments.
    Parameters:
      `arg` - The arguments
    Throws:
      `JasperException` - JSPC error

  - ### getKeepGenerated

    public boolean getKeepGenerated()
    In JspC this always returns `true`.
    Specified by:
      `getKeepGenerated` in interface `Options`
    Returns:
      `true` to keep the generated source

  - ### getTrimSpaces

    public TrimSpacesOption getTrimSpaces()
    Specified by:
      `getTrimSpaces` in interface `Options`
    Returns:
      `TrimSpacesOption.TRUE` to remove template text that consists only of whitespace from the output completely, `TrimSpacesOption.SINGLE` to replace such template text with a single space, `TrimSpacesOption.FALSE` to leave such template text unchanged or `TrimSpacesOption.EXTENDED` to remove template text that consists only of whitespace and to replace any sequence of whitespace and new lines within template text with a single new line.

  - ### setTrimSpaces

    public void setTrimSpaces(TrimSpacesOption trimSpaces)

  - ### setTrimSpaces

    public void setTrimSpaces(String ts)
    Sets the option to control handling of template text that consists entirely of whitespace.
    Parameters:
      `ts` - New value

  - ### setTrimSpaces

    public void setTrimSpaces(boolean trimSpaces)

  - ### isPoolingEnabled

    public boolean isPoolingEnabled()
    Specified by:
      `isPoolingEnabled` in interface `Options`
    Returns:
      `true` if tag handler pooling is enabled, `false` otherwise.

  - ### setPoolingEnabled

    public void setPoolingEnabled(boolean poolingEnabled)
    Sets the option to enable the tag handler pooling.
    Parameters:
      `poolingEnabled` - New value

  - ### isXpoweredBy

    public boolean isXpoweredBy()
    Specified by:
      `isXpoweredBy` in interface `Options`
    Returns:
      `true` to generate a X-Powered-By response header.

  - ### setXpoweredBy

    public void setXpoweredBy(boolean xpoweredBy)
    Sets the option to enable generation of X-Powered-By response header.
    Parameters:
      `xpoweredBy` - New value

  - ### getDisplaySourceFragment

    public boolean getDisplaySourceFragment()
    In JspC this always returns `true`.
    Specified by:
      `getDisplaySourceFragment` in interface `Options`
    Returns:
      `true` to include a source fragment in exception messages.

  - ### getMaxLoadedJsps

    public int getMaxLoadedJsps()
    Description copied from interface: `Options`
    The maximum number of loaded jsps per web-application. If there are more jsps loaded, they will be unloaded. If unset or less than 0, no jsps are unloaded.
    Specified by:
      `getMaxLoadedJsps` in interface `Options`
    Returns:
      The JSP count

  - ### getJspIdleTimeout

    public int getJspIdleTimeout()
    Specified by:
      `getJspIdleTimeout` in interface `Options`
    Returns:
      the idle time in seconds after which a JSP is unloaded. If unset or less or equal than 0, no jsps are unloaded.

  - ### getErrorOnUseBeanInvalidClassAttribute

    public boolean getErrorOnUseBeanInvalidClassAttribute()
    Description copied from interface: `Options`
    Returns true if Jasper issues a compilation error instead of a runtime Instantiation error if the class attribute specified in useBean action is invalid.
    Specified by:
      `getErrorOnUseBeanInvalidClassAttribute` in interface `Options`
    Returns:
      `true` to get an error

  - ### setErrorOnUseBeanInvalidClassAttribute

    public void setErrorOnUseBeanInvalidClassAttribute(boolean b)
    Sets the option to issue a compilation error if the class attribute specified in useBean action is invalid.
    Parameters:
      `b` - New value

  - ### getMappedFile

    public boolean getMappedFile()
    Specified by:
      `getMappedFile` in interface `Options`
    Returns:
      `true` if HTML mapped Servlets are supported.

  - ### setMappedFile

    public void setMappedFile(boolean b)

  - ### setClassDebugInfo

    public void setClassDebugInfo(boolean b)
    Sets the option to include debug information in compiled class.
    Parameters:
      `b` - New value

  - ### getClassDebugInfo

    public boolean getClassDebugInfo()
    Specified by:
      `getClassDebugInfo` in interface `Options`
    Returns:
      `true` if debug information in included in compiled classes.

  - ### isCaching

    public boolean isCaching()
    Specified by:
      `isCaching` in interface `Options`
    Returns:
      `true` is caching is enabled (used for precompilation).

  - ### setCaching

    public void setCaching(boolean caching)
    Sets the option to enable caching.
    Parameters:
      `caching` - New value
    See Also:
      - `Options.isCaching()`

  - ### getCache

    public Map<String, TagLibraryInfo> getCache()
    Description copied from interface: `Options`
    The web-application wide cache for the TagLibraryInfo tag library descriptors, used if `Options.isCaching()` returns `true`.

    Using this cache avoids the cost of repeating the parsing of a tag library descriptor XML file (performed by TagLibraryInfoImpl.parseTLD).

    Specified by:
      `getCache` in interface `Options`
    Returns:
      the Map(String uri, TagLibraryInfo tld) instance.

  - ### getCheckInterval

    public int getCheckInterval()
    In JspC this always returns `0`.
    Specified by:
      `getCheckInterval` in interface `Options`
    Returns:
      background compile thread check interval in seconds

  - ### getModificationTestInterval

    public int getModificationTestInterval()
    In JspC this always returns `0`.
    Specified by:
      `getModificationTestInterval` in interface `Options`
    Returns:
      modification test interval.

  - ### getRecompileOnFail

    public boolean getRecompileOnFail()
    In JspC this always returns `false`.
    Specified by:
      `getRecompileOnFail` in interface `Options`
    Returns:
      `true` if re-compile will occur on a failure.

  - ### getDevelopment

    public boolean getDevelopment()
    In JspC this always returns `false`. Main development flag, which enables detailed error reports with sources, as well automatic recompilation of JSPs and tag files. This setting should usually be `false` when running in production.
    Specified by:
      `getDevelopment` in interface `Options`
    Returns:
      `true` if Jasper is in development mode

  - ### isSmapSuppressed

    public boolean isSmapSuppressed()
    Specified by:
      `isSmapSuppressed` in interface `Options`
    Returns:
      `true` to suppress generation of SMAP info for JSR45 debugging.

  - ### setSmapSuppressed

    public void setSmapSuppressed(boolean smapSuppressed)
    Sets smapSuppressed flag.
    Parameters:
      `smapSuppressed` - New value

  - ### isSmapDumped

    public boolean isSmapDumped()
    Description copied from interface: `Options`
    This setting is ignored if suppressSmap() is `true`.
    Specified by:
      `isSmapDumped` in interface `Options`
    Returns:
      `true` to write SMAP info for JSR45 debugging to a file.

  - ### setSmapDumped

    public void setSmapDumped(boolean smapDumped)
    Sets smapDumped flag.
    Parameters:
      `smapDumped` - New value
    See Also:
      - `Options.isSmapDumped()`

  - ### setGenStringAsCharArray

    public void setGenStringAsCharArray(boolean genStringAsCharArray)
    Determines whether text strings are to be generated as char arrays, which improves performance in some cases.
    Parameters:
      `genStringAsCharArray` - true if text strings are to be generated as char arrays, false otherwise

  - ### genStringAsCharArray

    public boolean genStringAsCharArray()
    Description copied from interface: `Options`
    Indicates whether text strings are to be generated as char arrays.
    Specified by:
      `genStringAsCharArray` in interface `Options`
    Returns:
      `true` if text strings are to be generated as char arrays, `false` otherwise

  - ### setIeClassId

    @Deprecated public void setIeClassId(String ieClassId)
    Deprecated.
    Will be removed in Tomcat 10.1
    Sets the class-id value to be sent to Internet Explorer when using <jsp:plugin> tags.
    Parameters:
      `ieClassId` - Class-id value

  - ### getIeClassId

    @Deprecated public String getIeClassId()
    Deprecated.
    Description copied from interface: `Options`
    Gets the class-id value that is sent to Internet Explorer when using <jsp:plugin> tags.
    Specified by:
      `getIeClassId` in interface `Options`
    Returns:
      Class-id value

  - ### getScratchDir

    public File getScratchDir()
    Specified by:
      `getScratchDir` in interface `Options`
    Returns:
      the work folder

  - ### getCompiler

    public String getCompiler()
    Description copied from interface: `Options`
    Compiler to use.

    If `null` (the default), the java compiler from Eclipse JDT project, bundled with Tomcat, will be used. Otherwise, the `javac` task from Apache Ant will be used to call an external java compiler and the value of this option will be passed to it. See Apache Ant documentation for the possible values.

    Specified by:
      `getCompiler` in interface `Options`
    Returns:
      the compiler name

  - ### setCompiler

    public void setCompiler(String c)
    Sets the option to determine what compiler to use.
    Parameters:
      `c` - New value
    See Also:
      - `Options.getCompiler()`

  - ### getCompilerClassName

    public String getCompilerClassName()
    Specified by:
      `getCompilerClassName` in interface `Options`
    Returns:
      Jasper Java compiler class to use.

  - ### getCompilerTargetVM

    public String getCompilerTargetVM()
    Specified by:
      `getCompilerTargetVM` in interface `Options`
    Returns:
      the compiler target VM, e.g. 1.8.

  - ### setCompilerTargetVM

    public void setCompilerTargetVM(String vm)
    Sets the compiler target VM.
    Parameters:
      `vm` - New value
    See Also:
      - `Options.getCompilerTargetVM()`

  - ### getCompilerSourceVM

    public String getCompilerSourceVM()
    Specified by:
      `getCompilerSourceVM` in interface `Options`
    Returns:
      the compiler source VM, e.g. 1.8.

  - ### setCompilerSourceVM

    public void setCompilerSourceVM(String vm)
    Sets the compiler source VM.
    Parameters:
      `vm` - New value
    See Also:
      - `Options.getCompilerSourceVM()`

  - ### getTldCache

    public TldCache getTldCache()
    Description copied from interface: `Options`
    The cache that maps URIs, resource paths and parsed TLD files for the various tag libraries 'exposed' by the web application. A tag library is 'exposed' either explicitly in web.xml or implicitly via the uri tag in the TLD of a taglib deployed in a jar file (WEB-INF/lib).
    Specified by:
      `getTldCache` in interface `Options`
    Returns:
      the instance of the TldCache for the web-application.

  - ### getJavaEncoding

    public String getJavaEncoding()
    Returns the encoding to use for java files. The default is UTF-8.
    Specified by:
      `getJavaEncoding` in interface `Options`
    Returns:
      String The encoding

  - ### setJavaEncoding

    public void setJavaEncoding(String encodingName)
    Sets the encoding to use for java files.
    Parameters:
      `encodingName` - The name, e.g. "UTF-8"

  - ### getFork

    public boolean getFork()
    Description copied from interface: `Options`
    The boolean flag to tell Ant whether to fork JSP page compilations.

    Is used only when Jasper uses an external java compiler (wrapped through a `javac` Apache Ant task).

    Specified by:
      `getFork` in interface `Options`
    Returns:
      `true` to fork a process during compilation

  - ### setFork

    public void setFork(boolean fork)

  - ### getClassPath

    public String getClassPath()
    Specified by:
      `getClassPath` in interface `Options`
    Returns:
      the classpath used to compile generated Servlets

  - ### setClassPath

    public void setClassPath(String s)
    Sets the classpath used while compiling the servlets generated from JSP files
    Parameters:
      `s` - New value

  - ### getExtensions

    public List<String> getExtensions()
    Returns the list of file extensions that are treated as JSP files.
    Returns:
      The list of extensions

  - ### addExtension

    protected void addExtension(String extension)
    Adds the given file extension to the list of extensions handled as JSP files.
    Parameters:
      `extension` - The extension to add, e.g. "myjsp"

  - ### setUriroot

    public void setUriroot(String s)
    Base dir for the webapp. Used to generate class names and resolve includes.
    Parameters:
      `s` - New value

  - ### setJspFiles

    public void setJspFiles(String jspFiles)
    Parses comma-separated list of JSP files to be processed. If the argument is null, nothing is done.

    Each file is interpreted relative to uriroot, unless it is absolute, in which case it must start with uriroot.

    Parameters:
      `jspFiles` - Comma-separated list of JSP files to be processed

  - ### setCompile

    public void setCompile(boolean b)
    Sets the compile flag.
    Parameters:
      `b` - Flag value

  - ### setVerbose

    public void setVerbose(int level)
    Sets the verbosity level. The actual number doesn't matter: if it's greater than zero, the verbose flag will be true.
    Parameters:
      `level` - Positive means verbose

  - ### setValidateTld

    public void setValidateTld(boolean b)

  - ### isValidateTld

    public boolean isValidateTld()

  - ### setValidateXml

    public void setValidateXml(boolean b)

  - ### isValidateXml

    public boolean isValidateXml()

  - ### setBlockExternal

    public void setBlockExternal(boolean b)

  - ### isBlockExternal

    public boolean isBlockExternal()

  - ### setStrictQuoteEscaping

    public void setStrictQuoteEscaping(boolean b)

  - ### getStrictQuoteEscaping

    public boolean getStrictQuoteEscaping()
    Specified by:
      `getStrictQuoteEscaping` in interface `Options`
    Returns:
      `true` if the quote escaping required by section JSP.1.6 of the JSP specification should be applied to scriplet expression.

  - ### setQuoteAttributeEL

    public void setQuoteAttributeEL(boolean b)

  - ### getQuoteAttributeEL

    public boolean getQuoteAttributeEL()
    Specified by:
      `getQuoteAttributeEL` in interface `Options`
    Returns:
      `true` if EL expressions used within attributes should have the quoting rules in JSP.1.6 applied to the expression.

  - ### getThreadCount

    public int getThreadCount()

  - ### setThreadCount

    public void setThreadCount(String threadCount)

  - ### setListErrors

    public void setListErrors(boolean b)

  - ### setOutputDir

    public void setOutputDir(String s)

  - ### setPackage

    public void setPackage(String p)
    Sets the package name to be used for the generated servlet classes.
    Parameters:
      `p` - New value

  - ### setClassName

    public void setClassName(String p)
    Class name of the generated file ( without package ). Can only be used if a single file is converted. XXX Do we need this feature ?
    Parameters:
      `p` - New value

  - ### setWebXmlFragment

    @Deprecated public void setWebXmlFragment(String s)
    Deprecated.
    Will be removed in Tomcat 10. Use `setWebXmlInclude(String)`
    File where we generate a web.xml fragment with the class definitions.
    Parameters:
      `s` - New value

  - ### setWebXmlInclude

    public void setWebXmlInclude(String s)
    File where we generate configuration with the class definitions to be included in a web.xml file.
    Parameters:
      `s` - New value

  - ### setWebFragmentXml

    public void setWebFragmentXml(String s)
    File where we generate a complete web-fragment.xml with the class definitions.
    Parameters:
      `s` - New value

  - ### setWebXml

    public void setWebXml(String s)
    File where we generate a complete web.xml with the class definitions.
    Parameters:
      `s` - New value

  - ### setWebXmlEncoding

    public void setWebXmlEncoding(String encoding)
    Sets the encoding to be used to read and write web.xml files.

    If not specified, defaults to UTF-8.

    Parameters:
      `encoding` - Encoding, e.g. "UTF-8".

  - ### setAddWebXmlMappings

    public void setAddWebXmlMappings(boolean b)
    Sets the option to merge generated web.xml fragment into the WEB-INF/web.xml file of the web application that we were processing.
    Parameters:
      `b` - `true` to merge the fragment into the existing web.xml file of the processed web application ({uriroot}/WEB-INF/web.xml), `false` to keep the generated web.xml fragment

  - ### setFailOnError

    public void setFailOnError(boolean b)
    Sets the option that throws an exception in case of a compilation error.
    Parameters:
      `b` - New value

  - ### setUseNonstandardTagOptimizations

    public void setUseNonstandardTagOptimizations(String useNonstandardTagOptimizations)
    Sets the set of custom tags to use nonstandard optimizations.
    Parameters:
      `useNonstandardTagOptimizations` - which tags to override

  - ### getFailOnError

    public boolean getFailOnError()
    Returns:
      `true` if an exception will be thrown in case of a compilation error.

  - ### getJspConfig

    public JspConfig getJspConfig()
    Specified by:
      `getJspConfig` in interface `Options`
    Returns:
      JSP configuration information specified in web.xml.

  - ### getTagPluginManager

    public TagPluginManager getTagPluginManager()
    Specified by:
      `getTagPluginManager` in interface `Options`
    Returns:
      a Tag Plugin Manager

  - ### getGeneratedJavaAddTimestamp

    public boolean getGeneratedJavaAddTimestamp()
    Should the container include the time the file was generated in the comments at the start of a Java file generated from a JSP or tag. Defaults to `true`.

    Hard-coded to `false` for pre-compiled code to enable repeatable builds.

    Specified by:
      `getGeneratedJavaAddTimestamp` in interface `Options`
    Returns:
      `true` to include the timestamp, otherwise don't include it

  - ### generateWebMapping

    public void generateWebMapping(String file, JspCompilationContext clctxt) throws IOException
    Adds servlet declaration and mapping for the JSP page servlet to the generated web.xml fragment.
    Parameters:
      `file` - Context-relative path to the JSP file, e.g. `/index.jsp`
      `clctxt` - Compilation context of the servlet
    Throws:
      `IOException` - An IO error occurred

  - ### mergeIntoWebXml

    protected void mergeIntoWebXml() throws IOException
    Include the generated web.xml inside the webapp's web.xml.
    Throws:
      `IOException` - An IO error occurred

  - ### processFile

    protected void processFile(String file) throws JasperException
    Throws:
      `JasperException`

  - ### scanFiles

    @Deprecated public void scanFiles(File base)
    Deprecated.
    This will be removed in Tomcat 10. Use `scanFiles()`
    Locate all jsp files in the webapp. Used if no explicit jsps are specified.
    Parameters:
      `base` - Base path

  - ### scanFiles

    public void scanFiles()
    Locate all jsp files in the webapp. Used if no explicit jsps are specified. Scan is performed via the ServletContext and will include any JSPs located in resource JARs.

  - ### execute

    public void execute()
    Executes the compilation.
    Overrides:
      `execute` in class `org.apache.tools.ant.Task`

  - ### nextArg

    protected String nextArg()

  - ### nextFile

    protected String nextFile()

  - ### initWebXml

    protected void initWebXml() throws JasperException
    Throws:
      `JasperException`

  - ### completeWebXml

    protected void completeWebXml()

  - ### initTldScanner

    protected void initTldScanner(JspCServletContext context, ClassLoader classLoader)

  - ### newTldScanner

    protected TldScanner newTldScanner(JspCServletContext context, boolean namespaceAware, boolean validate, boolean blockExternal)

  - ### initServletContext

    protected void initServletContext(ClassLoader classLoader) throws IOException, JasperException
    Throws:
      `IOException`
      `JasperException`

  - ### initClassLoader

    protected ClassLoader initClassLoader() throws IOException
    Initializes the classloader as/if needed for the given compilation context.
    Returns:
      the classloader that will be used
    Throws:
      `IOException` - If an error occurs

  - ### locateUriRoot

    protected void locateUriRoot(File f)
    Find the WEB-INF dir by looking up in the directory tree. This is used if no explicit docbase is set, but only files.
    Parameters:
      `f` - The path from which it will start looking

  - ### resolveFile

    protected File resolveFile(String s)
    Resolves the relative or absolute pathname correctly in both Ant and command-line situations. If Ant launched us, we should use the basedir of the current project to resolve relative paths. See Bugzilla 35571.
    Parameters:
      `s` - The file
    Returns:
      The file resolved

  - ### getUseNonstandardTagOptimizations

    public String getUseNonstandardTagOptimizations()
    Description copied from interface: `Options`
    A string containing a comma-separated list of names to which custom tag implementations should be applied. Unknown or unused tag entries are harmless. Generally defined via an init parameter on the JspServlet.
    Specified by:
      `getUseNonstandardTagOptimizations` in interface `Options`
    Returns:
      which tags to use