Navigation:  Programming Cookbook > Deploying Applications > Lagoon Deployment Wizard >

Step 4

Previous pageReturn to chapter overviewNext page

With the Strip redundant classes option checked, the image stripper will attempt to find the network of all classes that are referenced from the contents of the root package. All other classes, that do not have instances or are not included in the set of required classes defined by ImageStripper>>requiredClasses, will be forcibly removed from the image.

Note, if your application does not execute correctly then the problem may be that, for some reason, too many classes have been stripped from the image. Determining the underlying cause of this can be quite tricky and often turning off the Strip redundant classes option is a simple solution that may work. The end result will, of course, be a larger deployed executable.

The Strip redundant methods option will inform the image stripper to remove all the methods from the image whose selectors are not referenced by any other method. Note that, because Smalltalk is a dynamically bound language, it is not possible to accurately determine whether a method will actually be called. For this reason, the redundant method stripping process errs on the side of caution and will leave methods in the image that can never be called simply because they have the same selector as one that can.

When removing redundant methods, the operation takes place in several passes and the image is scanned repeatedly until no further methods can be removed. Choosing this option will significantly increase the time taken to strip the image and, therefore, during initial deployment testing you may like to turn it off.

If you choose to Strip redundant methods then you must be aware that any methods that do not appear to be referenced by others may be inadvertently removed. A typical situation where this might occur is in the use of a #perform: that takes a composed symbol as its argument. For example, ValueAspectAdaptors will compose their "set" selector by appending a $: to their specified "get" selector. In these cases the stripper might incorrectly remove the setter methods even though they can still be called. By choosing the option to Preserve aspects set methods you inform the image stripper that all methods ending in a $:, that are paired with similarly named methods without the $:, are to be retained.

Normally, methods that are marked as #deprecated or #shouldNotImplement should not be called in a run-time application. Checking the appropriate boxes in this screen will ensure that these methods are all removed during stripping. Of course, it is always possible that you may be calling some deprecated methods, in which case you may wish to turn this option off until the situation is rectified.