diff --git a/org.aspectj.ajde/customBuildCallbacks.xml b/org.aspectj.ajde/customBuildCallbacks.xml
index c2011a4..7b35f0a 100644
--- a/org.aspectj.ajde/customBuildCallbacks.xml
+++ b/org.aspectj.ajde/customBuildCallbacks.xml
@@ -6,7 +6,7 @@
     http://www.eclipse.org/legal/epl-v10.html
    
     Contributors:
-        Andrew Eisenberg - modified for Groovy Eclipse 2.0
+        Andrew Eisenberg - modified for AJDT 2.2.3
  -->
 <!-- ===================================================================== -->
 <!-- Custom targets called from a project's generated build.xml            -->
diff --git a/org.aspectj.runtime/customBuildCallbacks.xml b/org.aspectj.runtime/customBuildCallbacks.xml
index 1383a1b..9419234 100644
--- a/org.aspectj.runtime/customBuildCallbacks.xml
+++ b/org.aspectj.runtime/customBuildCallbacks.xml
@@ -6,7 +6,7 @@
     http://www.eclipse.org/legal/epl-v10.html
    
     Contributors:
-        Andrew Eisenberg - modified for Groovy Eclipse 2.0
+        Andrew Eisenberg - modified for AJDT 2.2.3
  -->
 <!-- ===================================================================== -->
 <!-- Custom targets called from a project's generated build.xml            -->
diff --git a/org.aspectj.weaver/META-INF/MANIFEST.MF b/org.aspectj.weaver/META-INF/MANIFEST.MF
index 5eb3e18..1f24e40 100644
--- a/org.aspectj.weaver/META-INF/MANIFEST.MF
+++ b/org.aspectj.weaver/META-INF/MANIFEST.MF
@@ -28,3 +28,7 @@
 Eclipse-BundleShape: jar
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ClassPath: .,classes
+Implementation-Version: 1.7.2
+Implementation-Vendor: aspectj.org
+Premain-Class: org.aspectj.weaver.loadtime.Agent
+Can-Redefine-Classes: true
diff --git a/org.aspectj.weaver/customBuildCallbacks.xml b/org.aspectj.weaver/customBuildCallbacks.xml
index c2011a4..7b35f0a 100644
--- a/org.aspectj.weaver/customBuildCallbacks.xml
+++ b/org.aspectj.weaver/customBuildCallbacks.xml
@@ -6,7 +6,7 @@
     http://www.eclipse.org/legal/epl-v10.html
    
     Contributors:
-        Andrew Eisenberg - modified for Groovy Eclipse 2.0
+        Andrew Eisenberg - modified for AJDT 2.2.3
  -->
 <!-- ===================================================================== -->
 <!-- Custom targets called from a project's generated build.xml            -->
diff --git a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/launching/LTWApplicationLaunchConfigurationDelegate.java b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/launching/LTWApplicationLaunchConfigurationDelegate.java
index 1a153a3..41408ed 100644
--- a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/launching/LTWApplicationLaunchConfigurationDelegate.java
+++ b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/launching/LTWApplicationLaunchConfigurationDelegate.java
@@ -248,10 +248,18 @@
 	}
 
 	private String[] getLTWClasspath(String[] classpath, boolean isJava5OrLater) throws IOException {
-		URL resolvedaspectjWeaverJar = FileLocator.resolve(new URL(Platform.getBundle(AspectJPlugin.WEAVER_PLUGIN_ID).getEntry("/"), "aspectjweaver.jar")); //$NON-NLS-1$ //$NON-NLS-2$
-		URL resolvedaspectjRTJar = FileLocator.resolve(new URL(Platform.getBundle(AspectJPlugin.RUNTIME_PLUGIN_ID).getEntry("/"), "aspectjrt.jar")); //$NON-NLS-1$ //$NON-NLS-2$
-		String weaverPath = new Path(resolvedaspectjWeaverJar.getFile()).toOSString();
-		String rtPath = new Path(resolvedaspectjRTJar.getFile()).toOSString();
+		File resolvedaspectjWeaverJar = FileLocator.getBundleFile(Platform.getBundle(AspectJPlugin.WEAVER_PLUGIN_ID));
+		if (!resolvedaspectjWeaverJar.getName().endsWith(".jar")) {
+		    // runtime workbench
+		    resolvedaspectjWeaverJar = new File(resolvedaspectjWeaverJar, "classes");
+		}
+		File resolvedaspectjRTJar = FileLocator.getBundleFile(Platform.getBundle(AspectJPlugin.RUNTIME_PLUGIN_ID));
+        if (!resolvedaspectjRTJar.getName().endsWith(".jar")) {
+            // runtime workbench
+            resolvedaspectjRTJar = new File(resolvedaspectjRTJar, "classes");
+        }
+		String weaverPath = new Path(resolvedaspectjWeaverJar.getCanonicalPath()).toOSString();
+		String rtPath = new Path(resolvedaspectjRTJar.getCanonicalPath()).toOSString();
 		List<String> fullPath = new ArrayList<String>();
 		fullPath.add(weaverPath);
 		fullPath.add(rtPath);
