The argument extensionName is the name of the class file to load into the VM. The class referenced by extensionName must be a subclass of tcl.lang.Extension. All subclasses of Extension must implement the abstract init method, which is responsible for loading commands into the Tcl interpreter or loading any additional classes into the java VM. To load classes that do not subclass Extension into the VM, use the java::new, java::class or java::defineclass. See the Java package documentation for more detail.
The CLASS LOADING section below describes the order in which the class loader searches for classes on the file system and how additional classes are automatically loaded. The CLASS LOADING section is also relevant to any command in the java package that makes a reference to a java class (i.e. java::new.) References to unresolved classes will implicitly use the TclClassLoader to find unresolved classes.
If a path in pathList or env(TCL_CLASSPATH) is not an absolute path, it is assumed to be a relative path from the interpreter's current directory.
If the system class loader fails to load the class (step [2]), then the class was not found in the CLASSPATH list. A security check is done to assure that the class does not have access to package-protected variables. If the extension name begins with "java." or "tcl.", a Tcl error is generated.
Steps [3] and [5] only use the paths in pathList or env(TCL_CLASSPATH) to locate the class file. If the path is a directory, the loader looks in that directory for the class file. If the path is a jar file, the jar file is inspected to see if it contains the class. Steps [4] and [6] search pathList and env(TCL_CLASSPATH) again. If a path in the list is a directory, the loader looks for jar files in that directory, inspecting any jar files found to locate the class. The loader is capable of extracting files from a compressed jar file.
Any class referenced by extensionName will also be loaded into the VM. This includes classes used in new expressions as well as those whose instances are reported (i.e. the use of static methods.) Due to the recursive nature of class loading, any class referenced must be located in the CLASSPATH, env(TCL_CLASSPATH) or pathList. If a class cannot be located in one of the three locations, a Tcl error is generated.
Currently it is not possible to unload or reload an extension.
java::load -classpath /home/user/TclJava Foo
Copyright © 1998 by Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.