Package org.glassfish.rmic.tools.javac
Class BatchEnvironment
- java.lang.Object
-
- org.glassfish.rmic.tools.java.Environment
-
- org.glassfish.rmic.tools.javac.BatchEnvironment
-
- All Implemented Interfaces:
Constants,RuntimeConstants,ErrorConsumer
- Direct Known Subclasses:
BatchEnvironment
public class BatchEnvironment extends Environment implements ErrorConsumer
Main environment of the batch version of the Java compiler, this needs more work. WARNING: The contents of this source file are not part of any supported API. Code that depends on them does so at its own risk: they are subject to change or removal without notice.
-
-
Field Summary
Fields Modifier and Type Field Description private static intASM_ONLY_JAVA_VERSIONprotected ClassPathbinaryPathThe path we use for finding class (binary) files.private static ClassDefinitionFactoryclassDefinitionFactoryprivate java.util.Hashtable<Type,ClassDeclaration>classesThe classes, keyed by ClassDeclaration.private java.util.Vector<ClassDeclaration>classesOrderedThe classes, in order of appearance.private java.io.FilecovFilecoverage data fileprivate java.util.Vector<java.lang.Object>deprecationFilesA list of files containing deprecation warnings.private ErrorConsumererrorConsumerwrites out error messagesprivate java.lang.StringerrorFileNameThe filename where the last errors have occurredprivate interrorLimitMaximum number of errors to print.private ErrorMessageerrorsList of outstanding error messagesprivate interrorsPushedprivate java.util.Set<Identifier>exemptPackagesA set of Identifiers for all packages exempt from the "exists" check in Imports#resolve().intflagsflagsprivate booleanhitErrorLimitprivate static java.lang.StringJAVA_VERSION_PROPERTYshortmajorVersionMajor and minor versions to use for generated class files.shortminorVersionprivate intndeprecationsintnerrorsThe number of errors and warningsintnwarningsprivate java.io.OutputStreamoutThe stream where error message are printed.private java.util.Hashtable<Identifier,Package>packagesA hashtable of resource contexts.private static java.lang.StringUSE_LEGACY_PARSING_PROPERTY-
Fields inherited from interface org.glassfish.rmic.tools.java.Constants
ABSTRACT, ACCM_CLASS, ACCM_FIELD, ACCM_INNERCLASS, ACCM_MEMBER, ACCM_METHOD, ADD, AND, ARRAY, ARRAYACCESS, ASGADD, ASGBITAND, ASGBITOR, ASGBITXOR, ASGDIV, ASGLSHIFT, ASGMUL, ASGREM, ASGRSHIFT, ASGSUB, ASGURSHIFT, ASSIGN, ATT_ALL, ATT_ALLCLASSES, ATT_CODE, BITAND, BITNOT, BITOR, BITXOR, BOOLEAN, BOOLEANVAL, BREAK, BYTE, BYTEVAL, CASE, CAST, CATCH, CHAR, CHARVAL, CLASS, COLON, COMMA, COMMENT, COND, CONST, CONTINUE, CONVERT, CS_BINARY, CS_CHECKED, CS_COMPILED, CS_NOTFOUND, CS_PARSED, CS_SOURCE, CS_UNDECIDED, CS_UNDEFINED, CT_BLOCK, CT_BRANCH_FALSE, CT_BRANCH_TRUE, CT_CASE, CT_FIKT_METHOD, CT_FIKT_RET, CT_FIRST_KIND, CT_LAST_KIND, CT_METHOD, CT_SWITH_WO_DEF, DEC, DECLARATION, DEFAULT, DIV, DO, DOUBLE, DOUBLEVAL, ELSE, EQ, ERROR, EXPR, EXPRESSION, EXTENDS, F_COVDATA, F_COVERAGE, F_DEBUG_LINES, F_DEBUG_SOURCE, F_DEBUG_VARS, F_DEPENDENCIES, F_DEPRECATION, F_DUMP, F_ERRORSREPORTED, F_OPT, F_OPT_INTERCLASS, F_PRINT_DEPENDENCIES, F_STRICTDEFAULT, F_VERBOSE, F_VERSION12, F_WARNINGS, FALSE, FIELD, FINAL, FINALLY, FLOAT, FLOATVAL, FOR, GE, GOTO, GT, idAppend, idClass, idClassInit, idClone, idCode, idConstantValue, idCoverageTable, idDeprecated, idDocumentation, IDENT, idExceptions, idFinallyReturnValue, idGetClass, idInit, idInnerClasses, idJavaIoSerializable, idJavaLang, idJavaLangClass, idJavaLangCloneable, idJavaLangError, idJavaLangException, idJavaLangObject, idJavaLangRuntimeException, idJavaLangString, idJavaLangStringBuffer, idJavaLangThrowable, idLength, idLineNumberTable, idLocalVariableTable, idNew, idNull, idSourceFile, idStar, idSuper, idSynthetic, idThis, idToString, idTYPE, idValueOf, IF, IMPLEMENTS, IMPORT, INC, INLINEMETHOD, INLINENEWINSTANCE, INLINERETURN, INSTANCEOF, INT, INTERFACE, INTVAL, LBRACE, LE, LENGTH, LONG, LONGVAL, LPAREN, LSHIFT, LSQBRACKET, LT, M_ABSTRACT, M_ANONYMOUS, M_DEPRECATED, M_FINAL, M_INLINEABLE, M_INTERFACE, M_LOCAL, M_NATIVE, M_PRIVATE, M_PROTECTED, M_PUBLIC, M_STATIC, M_STRICTFP, M_SYNCHRONIZED, M_SYNTHETIC, M_TRANSIENT, M_VOLATILE, MAXFILESIZE, MAXLINENUMBER, METHOD, MM_CLASS, MM_FIELD, MM_MEMBER, MM_METHOD, MUL, NATIVE, NE, NEG, NEW, NEWARRAY, NEWFROMNAME, NEWINSTANCE, NOT, NULL, opNames, opPrecedence, OR, PACKAGE, paraDeprecated, POS, POSTDEC, POSTINC, PREDEC, prefixAccess, prefixArray, prefixClass, prefixLoc, prefixThis, prefixVal, PREINC, PRIVATE, PROTECTED, PUBLIC, QUESTIONMARK, RBRACE, REM, RETURN, RPAREN, RSHIFT, RSQBRACKET, SEMICOLON, SHORT, SHORTVAL, SIG_INNERCLASS, SIGC_INNERCLASS, STAT, STATIC, STRICTFP, STRINGVAL, SUB, SUPER, SWITCH, SYNCHRONIZED, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_DOUBLE, TC_ERROR, TC_FLOAT, TC_INT, TC_LONG, TC_METHOD, TC_NULL, TC_SHORT, TC_VOID, THIS, THROW, THROWS, TM_ARRAY, TM_BOOLEAN, TM_BYTE, TM_CHAR, TM_CLASS, TM_DOUBLE, TM_ERROR, TM_FLOAT, TM_INT, TM_INT32, TM_INTEGER, TM_LONG, TM_METHOD, TM_NULL, TM_NUM32, TM_NUM64, TM_NUMBER, TM_REAL, TM_REFERENCE, TM_SHORT, TM_VOID, tracing, TRANSIENT, TRUE, TRY, TYPE, URSHIFT, VARDECLARATION, VOID, VOLATILE, WHEREOFFSETBITS, WHILE
-
Fields inherited from interface org.glassfish.rmic.tools.java.RuntimeConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_CLASS, CONSTANT_DOUBLE, CONSTANT_FIELD, CONSTANT_FLOAT, CONSTANT_INTEGER, CONSTANT_INTERFACEMETHOD, CONSTANT_INVOKEDYNAMIC, CONSTANT_LONG, CONSTANT_METHOD, CONSTANT_METHODHANDLE, CONSTANT_METHODTYPE, CONSTANT_NAMEANDTYPE, CONSTANT_STRING, CONSTANT_UNICODE, CONSTANT_UTF8, JAVA_DEFAULT_MINOR_VERSION, JAVA_DEFAULT_VERSION, JAVA_MAGIC, JAVA_MAX_SUPPORTED_MINOR_VERSION, JAVA_MAX_SUPPORTED_VERSION, JAVA_MIN_SUPPORTED_VERSION, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_breakpoint, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dead, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokedynamic, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_label, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_try, opc_wide, opcLengths, opcNames, SIG_ARRAY, SIG_BOOLEAN, SIG_BYTE, SIG_CHAR, SIG_CLASS, SIG_DOUBLE, SIG_ENDCLASS, SIG_ENDMETHOD, SIG_FLOAT, SIG_INT, SIG_LONG, SIG_METHOD, SIG_PACKAGE, SIG_SHORT, SIG_VOID, SIGC_ARRAY, SIGC_BOOLEAN, SIGC_BYTE, SIGC_CHAR, SIGC_CLASS, SIGC_DOUBLE, SIGC_ENDCLASS, SIGC_ENDMETHOD, SIGC_FLOAT, SIGC_INT, SIGC_LONG, SIGC_METHOD, SIGC_PACKAGE, SIGC_SHORT, SIGC_VOID, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
-
-
Constructor Summary
Constructors Constructor Description BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath)BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath, ErrorConsumer errorConsumer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanclassExists(Identifier nm)Check if a class exists Applies only to package members (non-nested classes).(package private) static ClassDefinitionFactorycreateClassDefinitionFactory()voiderror(java.lang.Object source, long where, java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)Issue an errorjava.lang.StringerrorString(java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)Error StringvoidflushErrors()ClassDeclarationgetClassDeclaration(Identifier nm)Get a class, given the fully qualified class nameClassDeclarationgetClassDeclaration(Type t)Return a class declaration given a type.java.util.Enumeration<ClassDeclaration>getClasses()Return an enumeration of all the currently defined classes in order of appearance to getClassDeclaration().java.io.FilegetcovFile()Return coverage data fileintgetFlags()Return flagsjava.lang.Iterable<ClassDeclaration>getGeneratedClasses()Return the declarations for all generated classes.shortgetMajorVersion()Return major version to use for generated class filesstatic intgetMaxSupportedClassVersion()shortgetMinorVersion()Return minor version to use for generated class filesPackagegetPackage(Identifier pkg)Get the package path for a packageprivate static intgetVersionPortion(java.lang.String versionString)private booleaninsertError(long where, java.lang.String message)Insert an error message in the list of outstanding error messages.private static booleanisBinaryClassCompatibleJavaVersion(java.lang.String property)booleanisExemptPackage(Identifier id)Tells whether an Identifier refers to a package which should be exempt from the "exists" check in Imports#resolve().voidloadDefinition(ClassDeclaration c)Load the definition of a class or at least determine how to load it.private ClassDefinitionloadFile(ClassFile file)Load a binary fileClassDefinitionmakeClassDefinition(Environment toplevelEnv, long where, IdentifierToken name, java.lang.String doc, int modifiers, IdentifierToken superClass, IdentifierToken[] interfaces, ClassDefinition outerClass)Create a new class.MemberDefinitionmakeMemberDefinition(Environment origEnv, long where, ClassDefinition clazz, java.lang.String doc, int modifiers, Type type, Identifier name, IdentifierToken[] argNames, IdentifierToken[] expIds, java.lang.Object value)Create a new field.static booleanmayUseBinaryClassFactory()private booleanneedsCompilation(java.util.Hashtable<ClassDeclaration,ClassDeclaration> check, ClassDeclaration c)Load a binary classvoidoutput(java.lang.String msg)Output a string.voidparseFile(ClassFile file)Parse a source filevoidpushError(java.lang.String errorFileName, int line, java.lang.String message, java.lang.String referenceText, java.lang.String referenceTextPointer)Flush outstanding errorsprivate voidreportError(java.lang.Object src, long where, java.lang.String err, java.lang.String msg)Report errorprivate voidsetExemptPackages()Set the set of packages which are exempt from the exists check in Imports#resolve().voidshutdown()Release resources in classpath.private static booleanuseBinaryClassFactory()-
Methods inherited from class org.glassfish.rmic.tools.java.Environment
classExists, covdata, coverage, debug_lines, debug_source, debug_vars, debugOutput, dependencies, deprecation, dtEnter, dtEvent, dtExit, dump, dumpModifiers, error, error, error, error, explicitCast, getCharacterEncoding, getClassDefinition, getClassDefinition, getImports, getQualifiedClassDefinition, getSource, implicitCast, isApplicable, isMoreSpecific, isMoreSpecific, opt, opt_interclass, print_dependencies, resolve, resolve, resolveByName, resolveExtendsByName, resolveName, resolveNames, resolvePackageQualifiedName, setCharacterEncoding, strictdefault, verbose, version12, warnings
-
-
-
-
Field Detail
-
USE_LEGACY_PARSING_PROPERTY
private static final java.lang.String USE_LEGACY_PARSING_PROPERTY
- See Also:
- Constant Field Values
-
JAVA_VERSION_PROPERTY
private static final java.lang.String JAVA_VERSION_PROPERTY
- See Also:
- Constant Field Values
-
ASM_ONLY_JAVA_VERSION
private static final int ASM_ONLY_JAVA_VERSION
- See Also:
- Constant Field Values
-
classDefinitionFactory
private static final ClassDefinitionFactory classDefinitionFactory
-
out
private java.io.OutputStream out
The stream where error message are printed.
-
binaryPath
protected ClassPath binaryPath
The path we use for finding class (binary) files.
-
packages
private java.util.Hashtable<Identifier,Package> packages
A hashtable of resource contexts.
-
classesOrdered
private java.util.Vector<ClassDeclaration> classesOrdered
The classes, in order of appearance.
-
classes
private java.util.Hashtable<Type,ClassDeclaration> classes
The classes, keyed by ClassDeclaration.
-
flags
public int flags
flags
-
majorVersion
public short majorVersion
Major and minor versions to use for generated class files. Environments that extend BatchEnvironment (such as javadoc's Env class) get the default values below. javac itself may override these versions with values determined from the command line "-target" option.
-
minorVersion
public short minorVersion
-
covFile
private java.io.File covFile
coverage data file
-
nerrors
public int nerrors
The number of errors and warnings
-
nwarnings
public int nwarnings
-
ndeprecations
private int ndeprecations
-
deprecationFiles
private java.util.Vector<java.lang.Object> deprecationFiles
A list of files containing deprecation warnings.
-
errorConsumer
private ErrorConsumer errorConsumer
writes out error messages
-
exemptPackages
private java.util.Set<Identifier> exemptPackages
A set of Identifiers for all packages exempt from the "exists" check in Imports#resolve(). These are the current packages for all classes being compiled as of the first call to isExemptPackage.
-
errorFileName
private java.lang.String errorFileName
The filename where the last errors have occurred
-
errors
private ErrorMessage errors
List of outstanding error messages
-
errorsPushed
private int errorsPushed
-
errorLimit
private int errorLimit
Maximum number of errors to print.
-
hitErrorLimit
private boolean hitErrorLimit
-
-
Constructor Detail
-
BatchEnvironment
public BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath)
-
BatchEnvironment
public BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath, ErrorConsumer errorConsumer)
-
-
Method Detail
-
createClassDefinitionFactory
static ClassDefinitionFactory createClassDefinitionFactory()
-
getMaxSupportedClassVersion
public static int getMaxSupportedClassVersion()
-
useBinaryClassFactory
private static boolean useBinaryClassFactory()
-
mayUseBinaryClassFactory
public static boolean mayUseBinaryClassFactory()
-
isBinaryClassCompatibleJavaVersion
private static boolean isBinaryClassCompatibleJavaVersion(java.lang.String property)
-
getVersionPortion
private static int getVersionPortion(java.lang.String versionString)
-
getFlags
public int getFlags()
Return flags- Overrides:
getFlagsin classEnvironment
-
getMajorVersion
public short getMajorVersion()
Return major version to use for generated class files- Overrides:
getMajorVersionin classEnvironment
-
getMinorVersion
public short getMinorVersion()
Return minor version to use for generated class files- Overrides:
getMinorVersionin classEnvironment
-
getcovFile
public java.io.File getcovFile()
Return coverage data file- Overrides:
getcovFilein classEnvironment
-
getClasses
public java.util.Enumeration<ClassDeclaration> getClasses()
Return an enumeration of all the currently defined classes in order of appearance to getClassDeclaration().
-
getGeneratedClasses
public java.lang.Iterable<ClassDeclaration> getGeneratedClasses()
Return the declarations for all generated classes. These can be recognized as having the 'parsed' status
-
isExemptPackage
public boolean isExemptPackage(Identifier id)
Tells whether an Identifier refers to a package which should be exempt from the "exists" check in Imports#resolve().- Overrides:
isExemptPackagein classEnvironment
-
setExemptPackages
private void setExemptPackages()
Set the set of packages which are exempt from the exists check in Imports#resolve().
-
getClassDeclaration
public ClassDeclaration getClassDeclaration(Identifier nm)
Get a class, given the fully qualified class name- Overrides:
getClassDeclarationin classEnvironment
-
getClassDeclaration
public ClassDeclaration getClassDeclaration(Type t)
Description copied from class:EnvironmentReturn a class declaration given a type. Only works for class types.- Overrides:
getClassDeclarationin classEnvironment
-
classExists
public boolean classExists(Identifier nm)
Check if a class exists Applies only to package members (non-nested classes).- Overrides:
classExistsin classEnvironment
-
getPackage
public Package getPackage(Identifier pkg)
Get the package path for a package- Overrides:
getPackagein classEnvironment
-
parseFile
public void parseFile(ClassFile file) throws java.io.FileNotFoundException
Parse a source file- Throws:
java.io.FileNotFoundException
-
loadFile
private ClassDefinition loadFile(ClassFile file) throws java.io.IOException
Load a binary file- Throws:
java.io.IOException
-
needsCompilation
private boolean needsCompilation(java.util.Hashtable<ClassDeclaration,ClassDeclaration> check, ClassDeclaration c)
Load a binary class
-
loadDefinition
public void loadDefinition(ClassDeclaration c)
Load the definition of a class or at least determine how to load it. The caller must repeat calls to this method until it the state converges to CS_BINARY, CS_PARSED, or the like..- Overrides:
loadDefinitionin classEnvironment- See Also:
ClassDeclaration.getClassDefinition()
-
makeClassDefinition
public ClassDefinition makeClassDefinition(Environment toplevelEnv, long where, IdentifierToken name, java.lang.String doc, int modifiers, IdentifierToken superClass, IdentifierToken[] interfaces, ClassDefinition outerClass)
Create a new class.- Overrides:
makeClassDefinitionin classEnvironment
-
makeMemberDefinition
public MemberDefinition makeMemberDefinition(Environment origEnv, long where, ClassDefinition clazz, java.lang.String doc, int modifiers, Type type, Identifier name, IdentifierToken[] argNames, IdentifierToken[] expIds, java.lang.Object value)
Create a new field.- Overrides:
makeMemberDefinitionin classEnvironment
-
shutdown
public void shutdown()
Release resources in classpath.- Overrides:
shutdownin classEnvironment
-
errorString
public java.lang.String errorString(java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)Error String
-
insertError
private boolean insertError(long where, java.lang.String message)Insert an error message in the list of outstanding error messages. The list is sorted on input position and contains no duplicates. The return value indicates whether or not the message was actually inserted. The method flushErrors() used to check for duplicate error messages. It would only detect duplicates if they were contiguous. Removing non-contiguous duplicate error messages is slightly less complicated at insertion time, so the functionality was moved here. This also saves a miniscule number of allocations.
-
pushError
public void pushError(java.lang.String errorFileName, int line, java.lang.String message, java.lang.String referenceText, java.lang.String referenceTextPointer)Flush outstanding errors- Specified by:
pushErrorin interfaceErrorConsumer
-
flushErrors
public void flushErrors()
-
reportError
private void reportError(java.lang.Object src, long where, java.lang.String err, java.lang.String msg)Report error
-
error
public void error(java.lang.Object source, long where, java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)Issue an error- Overrides:
errorin classEnvironment
-
output
public void output(java.lang.String msg)
Output a string. This can either be an error message or something for debugging.- Overrides:
outputin classEnvironment
-
-