JDT weaving features
Starting with version 1.6.2, AJDT will be shipped with the JDT weaving plugin. This plugin implements the weaving service that uses Equinox Aspects to weave into JDT. Upon installing or upgrading AJDT, the weaving service is initially off. You are asked if the service should be enabled the first time an AspectJ project is opened or created.
Through this weaving, AJDT is able to integrate with Eclipse more deeply and in ways that were not possible before. This release introduces the following features:
- ITD-aware reconciling/eager parsing (in both Java and AJ editors, this means that red squiggles will not appear when referencing ITDs)
- ITD-aware content assist (for now only in *.aj files in AJ editors)
- ITD-aware type hierarchies (for now only super-type hierarchies can be calculated with ITD-awareness)
- Ability to search for aspect elements using standard Java search and Open Java type
With the service enabled, Eclipse may require more resources. If you encounter any sluggishness or memory problems, it is recommended that you increase your Xmx and PermGen sizes to at least 512 and 128 respectively, using something like the following vmargs when launching eclipse:
-vmargs -Xmx512M -XX:MaxPermSize=128M
For information on how to use the JDT weaving plugin to provide deep integration with plugins and editors for other Java-like languages, see JDT weaving implementation.
Due to Bug 257178, it is necessary to have the org.eclipse.equinox.weaing.hook bundle installed in the same directory as org.eclipse.osgi. For a work around, see below.
Turning on JDT Weaving manually
If automated enabling of JDT Weaving is not working for you, it is possible to manually enable it. Here are three ways to do it.
Simple way (try this first):
- In Eclipse open up the plug-in registry view.
- Look for org.eclipse.equinox.weaving.aspectj
- Right click and select "Show Advanced operations"
- Right click again and select start (if not already started)
If JDT Weaving still does not start, then try the following:
- Find the eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info file and open it in a text editor
- Find the line that says:
- Change false to true
- Save and start Eclipse
Or you can try this:
- Find the eclipse/configuration/config.ini file and open in a text editor
- Ensure that the line: osgi.framework.extensions=org.eclipse.equinox.weaving.hook is present
- On the line that starts osgi.bundles= after the '=', insert the text
- Save and start eclipse
AJDT with JDT weaving is only available for Eclipse 3.4 and 3.5. The easiest way to install is through the standard AJDT 1.6 update site:
Or through the dev AJDT 1.7 update site (for Eclipse 3.5):
Installing from this update site will automatically install Equinox Aspects from a separate update site. Additionally, the install will update your config.ini file to allow the weaving service to be enabled at startup.
Due to Bug 257178, it is currently only possible to install AJDT with JDT weaving in the same directory that Eclipse itself is installed in.
To do a manual install, first download the desired zip file of AJDT from the downloads page and unzip into your eclipse plugins or dropins folder.
Important: the org.eclipse.equinox.weaving.hook bundle must be installed in the same directory as the org.eclipse.osgi bundle. So, if you unzipped AJDT into your dropins directory, you must move org.eclipse.equinox.weaving.hook to plugins.
Next, restart Eclipse. If you already have AspectJ projects in your workspace, you will be prompted to enable JDT Weaving. If not, then you can enable in preferences (see below).
Installing JDT Weaving in a non-default location
It may be possible to install org.eclipse.equinox.weaving.hook in a location different from org.eclipse.osgi.
- Edit eclipse/configuration/config.ini
- Find the line that begins "osgi.framework=".
- Change the line that starts with "osgi.framework" to:
osgi.frameworkClassPath=file\:<full path to org.eclipse.osgi>,file\:<full path to org.eclipse.equinox.weaving.hook>
- Add the line:
- On the line that starts "osgi.bundles", after the '=', add this:
- Optionally add the following for verbose output of weaving:
aj.weaving.verbose=true org.aspectj.weaver.showWeaveInfo=true org.aspectj.osgi.verbose=true
- Save and start Eclipse
- Follow prompt to enable JDT Weaving if asked
In the end, your config.ini should look something like this:
... osgi.frameworkClassPath=file\:/Users/ajdt/eclipse/plugins/org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar,file\:/Users/ajdt/eclipse/dropins/plugins osgi.bundles=org.eclipse.equinox.weaving.aspectj@2\:start,reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.0.v20080604.jar@1\:start osgi.framework.extensions=org.eclipse.equinox.weaving.hook aj.weaving.verbose=true org.aspectj.weaver.showWeaveInfo=true org.aspectj.osgi.verbose=true ...
To see if the JDT Weaving plugin is properly configured, go to
Preferences -> JDT Weaving
This page will notify you of the state of the weaving service. It will also allow you to enable/disable the service.
If AJDT was installed through the update site, then you can uninstall it in the same way you uninstall any other Eclipse feature:
Help -> Software Updates -> Installed Software
Select AJDT, and click Uninstall.... This will also uninstall Equinox Aspects and undo the changes to your config.ini.
If either Equinox Aspects or AJDT were installed manually, then they must be uninstalled manually as well by deleting the appropriate plugins from the filesystem.
If you had originally installed Equinox Aspects manually, then you must also manually back out all the changes to the config.ini.
Running AJDT without JDT Weaving
It is possible to disable the weaving service and still run AJDT. Basic features, such as the AJBuilder, navigation, and cross references will be available, but advanced features will be disabled.
To disable JDT Weaving, go to
Preferences -> JDT Weaving
Click the button Disable JDT Weaving button and restart the workbench. Similarly, to re-enable the weaving service go back to the preference page and click Enable JDT Weaving.
Alternatively, to disable manually, you can edit the file eclipse/configuration/config.ini. Delete the line that looks something like this: