[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] RCP Application LTW problem

Hi All,

I'm having problems getting the load-time weaving working on the RCP Application project I'm working on.

To try to figure out what could be going wrong, I tried creating a simple RCP application using the "Hello RCP" template/wizard via the Eclipse IDE.

So I've done the following so far:
1. Created a target platform based on RCP 3.4.
2. Added the following plugins to the target platform:
3. Created the Hello RCP sample application. Created a .product file to use to run the application.
2. Created a META-INF/aop.xml file that used the one aspect defined in the sample RCP application.
3. Set the VM arg "-javaagent:F:\hello3.4Workspace\target.3.4\plugins/org.aspectj.weaver_1.6.1.20080703120000/aspectjweaver.jar"


If I run the application the output gives:
============================
osgi> [DefaultClassLoader@331059] info AspectJ Weaver Version 1.6.1rc1 built on Thursday Jul 3, 2008 at 20:33:51 GMT
[DefaultClassLoader@331059] info register classloader org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@331059
[DefaultClassLoader@331059] info using configuration /META-INF/aop.xml
[DefaultClassLoader@331059] info register aspect aspects.HelloAspect
Jul 21, 2008 10:13:03 AM org.aspectj.weaver.tools.Jdk14Trace error
SEVERE: experiment2/Application
java.lang.NoClassDefFoundError: org/aspectj/lang/reflect/CodeSignature
    at org.aspectj.weaver.patterns.KindedPointcut.read(KindedPointcut.java:245)
    at org.aspectj.weaver.patterns.Pointcut.read(Pointcut.java:286)
    at org.aspectj.weaver.patterns.CflowPointcut.read(CflowPointcut.java:103)
    at org.aspectj.weaver.patterns.Pointcut.read(Pointcut.java:295)
    at org.aspectj.weaver.patterns.AndPointcut.read(AndPointcut.java:87)
    at org.aspectj.weaver.patterns.Pointcut.read(Pointcut.java:290)
    at org.aspectj.weaver.AjAttribute$AdviceAttribute.read(AjAttribute.java:490)
    at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:101)
    at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(BcelAttributes.java:106)
    at org.aspectj.weaver.bcel.BcelMethod.unpackAjAttributes(BcelMethod.java:191)
    at org.aspectj.weaver.bcel.BcelMethod.<init>(BcelMethod.java:104)
    at org.aspectj.weaver.bcel.BcelObjectType.getDeclaredMethods(BcelObjectType.java:248)
    at org.aspectj.weaver.ReferenceType.getDeclaredMethods(ReferenceType.java:524)
    at org.aspectj.weaver.ResolvedType.getDeclaredAdvice(ResolvedType.java:748)
    at org.aspectj.weaver.ResolvedType.getDeclaredShadowMungers(ResolvedType.java:785)
    at org.aspectj.weaver.ResolvedType.collectShadowMungers(ResolvedType.java:626)
    at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:518)
    at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:78)
    at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:65)
    at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:203)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:398)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:239)
    at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:151)
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:262)
    at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:267)
    at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:245)
    at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:86)
    at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:52)
    at sun.instrument.TransformerManager.transform(TransformerManager.java:122)
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:155)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:165)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:554)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:524)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:455)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:443)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:423)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:368)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:444)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:397)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:385)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:313)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1274)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:160)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:867)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:188)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Jul 21, 2008 10:13:03 AM org.aspectj.weaver.tools.Jdk14Trace info
INFO: Dumping to F:\eclipse3.4\.\ajcore.20080721.101303.562.txt
============================


I confirmed that the class org.aspectj.lang.reflect.CodeSignature is in the target platform though (via the aspectrt.jar file), so it is puzzling.

In addition, I then tried to debug the application by setting a breakpoint to stop at any Exception that occurs. The debuggers first break is at:
Thread [main] (Suspended (exception ClassNotFoundException))   
    ClassLoader.findBootstrapClass(String) line: not available [native method] [local variables unavailable]   
    Launcher$ExtClassLoader(ClassLoader).findBootstrapClass0(String) line: 891   
    Launcher$ExtClassLoader(ClassLoader).loadClass(String, boolean) line: 301   
    Launcher$AppClassLoader(ClassLoader).loadClass(String, boolean) line: 299   
    Launcher$AppClassLoader.loadClass(String, boolean) line: 268   
    Launcher$AppClassLoader(ClassLoader).loadClass(String) line: 251   
    InstrumentationImpl.loadClassAndCallPremain(String, String) line: 133
   
The class it can't find is given to be "org.aspectj.weaver.loadtime.Agent". I checked and this class is also in the target platform (via the aspectjweaver.jar file) so I'm puzzled by this.

I made sure that the product has the right dependencies set too. E.g. The "org.aspectj.runtime" and "org.aspectj.weaver" plugins are depended on.


Any help would be appreciated, thanks.

Burt