Working with the Jars in WebObjects Extensions

Version 16.1 by Lachlan Deck on 2007/09/10 18:47

The jar files in /Library/WebObjects/Extensions are automatically added to the classpath when a WebObjects application is launched from JavaMonitor or the command line.  They are also added to the classpath by Xcode.  To make running an application in Eclipse more closely match these other situations, create a User Library to match the jar files in /Library/WebObjects/Extensions.

Warning
Recommendation

Relying on the one version of jars in {{/Library/WebObjects/Extensions}} leads to problems when managing multiple applications. i.e., if you update the jars or remove any of them you are required to update potentially every application. Worse, it makes the assumption that your deployment environment matches your development environment! It is therefore highly recommended that you avoid keeping and using jars in {{/Library/WebObjects/Extensions}} and instead keep them in your project itself or in a framework that can be embedded in your application. See [Add a Framework Dependency] and [Add a Jar Dependency].

Success

Hint

Afterwards, you will need to then add this library to the build path of any or all relevant projects, and to the launcher for applications and unit tests.

To do this, go to Window - Preferences. No, I don't know why they put it under the Window menu. You may get an error the first time you do this. If this happens, close the Preferences window and open it again. Expand the tree on the left like this:
UserLibraries.jpg


Click New and enter WebObjectsExtensions as the library name:
LibraryName.jpg


Click OK, select WebObjectsExtensions, and click Add Jars.  Select all the jars in /Library/WebObjects/Extensions.  The result should look like this (you may not have this exact same set of jars but if you have followed the other instructions you should have the ones that are needed):
FinalLibraries.jpg

Warning
Watch for Updates

This is a *static* list of jars.  If anything is added to or modified in */Library/WebObjects/Extensions*, you will need to manually edit this User Library.

After that you added the library to the preferences, you need to add this library to the build path of projects that depends on the jars stored in /Library/WebObjects/Extensions.  Right-click on the project > Build Path > Add Librairies > User Library, and select WebObjectsExtensions.

Success

Deployment tip

As noted by the initial recommendation warning, this whole approach assumes that all your applications depend on the same list and version of jars and that your development environment matches your development environment. You should avoid this approach however you can meet this halfway by adding the following to your ant build file.
{noformat}
    <target name="build.woapp" depends="setProps,init.build,compile">
        <woapplication ...>
            <....>
            <lib dir="/Library/WebObjects/Extensions">
                <include name="/*.jar"/>
            </lib>
        </woapplication>
    </target>
{noformat}
This will cause all the jars in {{/Library/WebObjects/Extensions}} to be embedded in {{YourApp.woa/Contents/Resources/Java}} and added to your application's classpath files.