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.
![]() |
A package with reference only classes, never written with the output classes. Example: the java.lang class. |
![]() |
A Package with referenced classes that is included in the obfuscation and written to the output. |
![]() |
A package with referenced classes that is included in the obufscated output and has per-package settings associated with it. |
![]() |
A package that contains unreferenced classes. |
![]() |
Reference only class, never written with the output classes. |
![]() |
Referenced class that is included in the obfuscation and written to the output. |
![]() |
Referenced class that is included in the obfuscation and written to the output and has per-class settings associated with it. |
![]() |
Unreferenced class, may be included in the output if 'remove unreferenced classes' is not selected. Included in obfuscation. |
![]() |
Class is a Java Bean. Only methods that do not match the bean patterns or BeanInfo or obfuscated. The manifest in the output Jar will add a JavaBean attribute for the class. |
![]() |
Class that is incomplete, one or more super-classes or super-interfaces this class derives from could not be loaded by JCloak. JCloak cannot obfuscate incomplete classes. |
![]() |
Obfuscateable public method. |
![]() |
Obfuscateable package private method. |
![]() |
Obfuscateable private method. |
![]() |
Public method that is blocked from obfuscation. The flyover text indicates the reason. |
![]() |
Package private method that is blocked from obfuscation. The flyover text indicates the reason. |
![]() |
Obfuscateable public field. |
![]() |
Obfuscateable package private field. |
![]() |
Obfuscateable private field. |
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. |
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.
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.
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.
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.
The obfuscate settings dialog lets you modify the obfuscation performed for your project. The dialog is show below.
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.
This section sets the global options for class name obfuscation.
Obfuscate Class Names
The actions for this control are detailed below:
|
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.
Obfuscate Access Level | Action |
public | All classes that don't override this global setting will have their name's obfuscated. |
package | All classes declared with default (package) access or private access will have their name's obfuscated. All public class names are preserved |
private | The classes names are bfuscated only if they are declared private. If a class is default (package) or public access it's name is preserved. |
none | No classes will have their names obfuscated, unless they override this setting with a class property setting. |
This global setting can be overriden by a package or class setting.
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.
Obfuscate Access Level
|
Action
|
public
|
All symbols are eligable to be obfuscated. |
package |
This setting can be used to preserve the public API for a class library. The public and protected symbols are preserved. All private and package symbols are eligable to be obfuscated. |
private
|
Only the private symbols are obfuscated, the remaining symbols are preserved. |
none |
No symbols are obfuscated all symbols are preserved. |
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. |
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.
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.
The miscellaneous settings dialog lets you modify the various options for your project. The dialog is show below.