Main Menu

File Menu

Edit Menu

View Menu

Obfuscate Menu

Main Class Explorer Window

The main class explorer window is shown when JCloak finishes loading the classes in your project. The Main Class Explorer Window displays the packages, classes, fields and methods in a hierarchy.

The flyover text for each element of the class explorer describes the obfuscation state of that element.  The icons also indicate what methods/fields are blocked from obfuscation.  The Icons and their meanings are described in the table below.

Class Explorer Icons

Mouse Operations

The following table lists the mouse gestures supported by each class tree element.

Package The pop-up menu gesture (right click for Windows) opens a popup menu.  The properties menu item brings up the Package Properties Dialog
Class The pop-up menu gesture (right click for Windows) opens a popup menu.  From the menu you can set the class as Externally Referenced or Referenced by name
Method Double clicking on a method will bring up a text viewer with the method's source (if the methods source is on the classpath). The pop-up menu gesture (right click for Windows) opens a popup menu.  From the menu you can disable obfuscation of the method or open the Method Properties Dialog.

Locate Class Dialog

If JCloak cannot find a class on the classpaths specified for the project JCloak will prompt with this locate class dialog for the class.  The dialog is shown below.

JCloak requires access to any and all super-classes and super-interfaces of any obfuscated class. Classes that are simply referenced are not required, however it is advised to provide JCloak with the location of all classes.

This dialog instructs JCloak how to add a classpath to the project that locates the requested class.

You may enter the path to a Jar file, Cab file or class file. If you enter a path to the actual class file that contains the class and JCloak will compute the correct classpath.  The browse button will invoke a file browser you can use to locate the path.

Obfuscate classes on this path
If this box is checked then this class and other classes found on the classpath will be obfuscated.
 
Include classes on this path
If this box is checked then this class and other classes found on the classpath will be written to the output with the other obfuscated classes.
 
See the AddToClassPath directive and the Class Paths section for details on the treatment of classpaths.

If you wish to defer and add the classpath later, you can click 'Cancel'.

Select Don't Show this Dialog Again and JCloak will not use this dialog again durring this session to prompt for missing classes.

Project Settings

The project settings tab dialog allows you to alter settings setup by the new project wizard.

Class Path Settings

The classpath settings dialog lets you modify the obfuscation class path. The dialog is show below.


Single click on a 'Classpath Entry' will select it.  The delete button will delete the selected class path entry[ies].  The add button opens a dialog to allow you to browse for a directory, JAR/ZIP or classes to add to the classpath.

The classpath entires are listed in the search order. To modify the order select an entry and use the arrow buttons.

If you single click on 'Classpath Entry' and it's selected you can edit the entry or browse for a replacement for the entry.

The 'Include' and 'Obfuscate' selections are detailed in theAddToClassPath directive section.

 

Output Settings

The output settings dialog lets you modify the build output files that are generated when JCloak builds your project. The dialog is show below.


Click on the checkbox[es] next to the target output[s]; CAB, JAR or Directory that you want JCloak to produce. JCloak write the obfuscated class files to each output selected.

The 'Names Report' is a sorted text file listing the obfuscated name to original name translations.

Obfuscate Settings

The obfuscate settings dialog lets you modify the obfuscation performed for your project. The dialog is show below.


Debug Information

These checkboxes instruct JCloak to remove any debug information inserted into the class files by the Java compiler.  The local symbol information is useful only to debuggers.  The debug line numbers provide the line numbers in tracebacks printed by the java runtime when your program throws an exception.  Note if you disable removal of line numbers this will also set the source name attribute to follow the class name in your project so the traceback will be correctly printed.  See the SourceNameFromClass directive in the command line description for details on this.


 
Class Obfuscate

This section sets the global options for class name obfuscation.

Obfuscate Class Names

The actions for this control are detailed below:

Setting
Action
neither All class and package names are preserved
classandpackage

The class names are obfuscated and the package tree is  flattened to a single level

classonly The package names are preserved, only the class names are obfuscated.

Class Access Level

If class name obfuscation is enabled (set to classandpackage or classonly) then you may also specify the global class access level. This control sets the minimum access modifier a class must have for it to be eligable to have it's name obfuscated. Classes that have access modifiers that are equal or more restrictive then this setting have their names obfuscated if no other setting or reason blocks the obfuscation.

This setting can be overriden on a per-package or per-class basis. Per-class settings override per-package settings which override this default global setting.

See the section on Controlling Class Renaming for more details.

 

This global setting can be overriden by a package or class setting.

Method/Field Obfuscate

Obfuscate Methods & Fields

This check box enables symbol name obfuscation when it is selected.

Obfuscate Access Level

When symbol name obfuscation is enabled the Obfuscate Access Level setting sets the global setting for the minimum access level a symbol must have for it to be eligable to be obfuscated. The eligable symbols are obfuscated if no other setting or reason blocks their obfuscation. Class or package settings for obfuscate access level will override this setting for the particular class or package. See the section on Controlling Obfuscated Names for more details.

 

Java Bean Obfuscate

The 'Java Bean Settings' control sets the global setting for what classes JCloak will recognize as Java Bean's and how JCloak will preserve the bean methods and classes these Bean's define and use.

JCloak can recognize and use BeanInfo classes to automatically exclude classes and methods that a Bean want's to expose publically. JCloak can also introspect a class to determine the Bean methods and preserve them.

Bean controls can also be set on a per-package or per-class basis.

JCloak puts attributes in the manifest of the output Jar file to indicate each Bean.

The following settings and actions are defined:

Java Bean Setting
Action
none
JCloak does not preserve any Java Bean classes methods.

beaninfo

JCloak recognizes only classes as Java Beans that have an associated BeanInfo class. Only the methods and classes specified expliclitly in the BeanInfo class are preserved.
introspec
JCloak recognizes only classes as Java Beans that have an associated BeanInfo class. JCloak introspects the Java Bean to determine the methods and classes to preserve, thus all classes and methods that match Bean design patterns are preserved.

all

JCloak recognizes all classes as Java Beans. JCloak introspects each class to determine the methods and classes to preserve, thus all classes and methods that match Bean design patterns are preserved.
Serialization Settings

This section sets the global option for how JCloak handles serialization.

Preserve Serialized Classes & Fields

If this option is selected JCloak will preserve the class names and non-transient field names in any class that is Serializable. This option is overriden by any per-class setting, see the section on Class Properties.

Symbol Map Settings

This settings tab allows you to perform incremental obfuscation.

There are two file paths, one for loading a name map and the other for saving a name map. You can check one or both boxes to perform either or both functions.

The text field is the path to load the name map from or save the name map to.

Refer to the operations section Controlling Obfuscated Names for more information on the use of name maps.


Miscellaneous Settings

The miscellaneous settings dialog lets you modify the various options for your project. The dialog is show below.



 
Verbose Prints
Selecting this checkbox enables extended progress messages when the project is built from command line JCloak.
 
Save Absolute Paths
Selecting this checkbox enables saving the project classpath, output paths, etc. as absolute paths. If the box is unchecked JCloak will save paths relative to the location of the project file.
 
Remove Unreferenced Classes
Remove Unreferenced Symbols
These settings allow JCloak to remove unused symbols and classes to reduce the size of Applets. These settings should be disabled for building a class library.
 
Preserve RMI Remote Classes
If this checkbox is selected JCloak will automatically handle RMI. When JCloak detects a class that is remote (implements a remote interface) it automatically preserves the classname for the class as well as the _Skel and _Stub classes.  In addition JCloak preserves the remoted methods and any objects they pass as parameters or return. This RMI handling is compatible with both Java 1 and Java 2 standard RMI
 
Preserve Dynamically Loaded Class Names
If selected the dynamic class load detection feature is enabled. If enabled JCloak will scan the references starting with the classes that are referenced externally (see LoadReferencedClassesOnly). For each class that is referenced via the starting classes, JCloak checks if the class is explicitly instantiated (via a 'new'). If not is assumed to be dynamically loaded and JCloak preserves it's classname.