Working with the Jars in WebObjects Extensions

Last modified by Pascal Robert on 2008/01/04 19:46

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:

Information

UserLibraries.jpg

Click New and enter WebObjectsExtensions as the library name:

Information

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):

Information

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.

Warning

If you add this library to your projects and you work with a team, your coworkers should create the library before importing your projects. If not, the library will appear in the project but it will be empty. You can also export the library definition and ask your coworkers to import it.

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.

Unknown macro: noformat. Click on this message for details.

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.