Summary: | import handling and type lookup issues | ||||||
---|---|---|---|---|---|---|---|
Product: | [Tools] AspectJ | Reporter: | Andrew Clement <aclement> | ||||
Component: | Compiler | Assignee: | aspectj inbox <aspectj-inbox> | ||||
Status: | RESOLVED FIXED | QA Contact: | |||||
Severity: | normal | ||||||
Priority: | P3 | CC: | abhishek.sinha04, peter.melnikov | ||||
Version: | 1.6.9RC1 | ||||||
Target Milestone: | 1.6.9 | ||||||
Hardware: | PC | ||||||
OS: | Windows 7 | ||||||
Whiteboard: | |||||||
Attachments: |
|
Description
Andrew Clement
2010-06-23 15:28:27 EDT
Created attachment 172545 [details]
Classfiles patching this issue
This jar includes two classes that replace those in an AspectJ 1.6.9 weaver.
to apply it, save it alongside aspectjweaver.jar then
jar -xvf pr317743.jar
jar -uvf aspectjweaver.jar org
this will patch BindingScope and SimpleScope in the jar.
I have applied the path and it works for me. Log file is now 2.5MB vs 22 MB before, and overall weaving speed has increased a lot. No more ClassNotFoundException error messages. Before, I got your patch, I changed slightly the SimpleScope.java: public UnresolvedType lookupType(String name, IHasPosition location) { ResolvedType resolvedType = world.resolve(UnresolvedType.forName(name), true); if(resolvedType.isMissing()) { for (int i = 0; i < importedNames.length; i++) { String importedName = importedNames[i]; // // make sure we're matching against the // // type name rather than part of it // if (importedName.endsWith("." + name)) { if (importedName.endsWith(name)) { return world.resolve(importedName); } } for (int i = 0; i < importedPrefixes.length; i++) { String importedPrefix = importedPrefixes[i]; ResolvedType tryType = world.resolve(UnresolvedType.forName(importedPrefix + name), true); if (!tryType.isMissing()) { return tryType; } } } return resolvedType; } This worked for me too. But it was just a quick fix. Just found single exception: SEVERE: Unable to find class 'java.lang.void' in repository java.lang.ClassNotFoundException: java.lang.void not found - unable to determine URL at org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:292) at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:390) at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:373) at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:111) at org.aspectj.weaver.World.resolveToReferenceType(World.java:452) at org.aspectj.weaver.World.resolve(World.java:298) at org.aspectj.weaver.patterns.SimpleScope.lookupType(SimpleScope.java:64) at org.aspectj.weaver.BindingScope.lookupType(BindingScope.java:69) I'am pretty sure it is because I have following pointcut declaration (and it is the only which has void as return type parameter): " || execution(public void net.mansion.redirect.impl.engine.web.RedirectProcessorServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse))" thanks for testing that so quickly. I'll probably refine it a bit and see if I can squeeze it into 1.6.9 final release. I just have to think through any cases that might be adversely affected. oh and i'll fix the void case too. change should make it into 1.6.9.RC2, available this week 1.6.9.RC2 is now available for download if you want to try it out. I am using aspectjweaver-1.6.11.jar. my aop.xml has <concrete-aspect name="auditInventory" extends="com.a.b.AbstractAuditAspect"> <pointcut name="methodToNotify" expression="execution(public * com.z.NotificationThread.run(..)) || execution(public * com.m.NotifyAuditFramework.notifyFw(..))"/> </concrete-aspect> I get error: Dec 20, 2013 12:51:19 PM org.aspectj.weaver.tools.Jdk14Trace error SEVERE: Unable to find class 'auditInventory' in repository java.lang.ClassNotFoundException: auditInventory not found - unable to determine URL at org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:292) at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:402) at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:376) at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:111) at org.aspectj.weaver.World.resolveToReferenceType(World.java:467) at org.aspectj.weaver.World.resolve(World.java:308) at org.aspectj.weaver.World.resolve(World.java:218) at org.aspectj.weaver.UnresolvedType.resolve(UnresolvedType.java:593) at org.aspectj.weaver.ResolvedMemberImpl.getSourceContext(ResolvedMemberImpl.java:608) at org.aspectj.weaver.bcel.BcelField.unpackAttributes(BcelField.java:80) at org.aspectj.weaver.bcel.BcelField.<init>(BcelField.java:73) at org.aspectj.weaver.bcel.LazyClassGen.addField(LazyClassGen.java:1439) at org.aspectj.weaver.bcel.LazyClassGen.addField(LazyClassGen.java:1484) at org.aspectj.weaver.bcel.BcelPerClauseAspectAdder.generatePerClauseMembers(BcelPerClauseAspectAdder.java:166) at org.aspectj.weaver.bcel.BcelPerClauseAspectAdder.doMunge(BcelPerClauseAspectAdder.java:96) at org.aspectj.weaver.bcel.BcelPerClauseAspectAdder.forceMunge(BcelPerClauseAspectAdder.java:68) at org.aspectj.weaver.loadtime.ConcreteAspectCodeGen.getBytes(ConcreteAspectCodeGen.java:467) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:495) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:290) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:176) at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:271) at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:276) at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:254) at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:90) at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54) at sun.instrument.TransformerManager.transform(Unknown Source) at sun.instrument.InstrumentationImpl.transform(Unknown Source) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.springframework.util.ClassUtils.forName(ClassUtils.java:257) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1256) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1227) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576) at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1304) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:315) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:394) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:594) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1654) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) My bad. I need to have concrete class in place of auditInventory. I have fixed that problem but I still getting Dec 20, 2013 1:23:12 PM org.aspectj.weaver.tools.Jdk14Trace error SEVERE: Unable to find class 'String' in repository java.lang.ClassNotFoundException: String not found - unable to determine URL at org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:292) at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:402) at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:376) at org.aspectj.weaver.ltw.LTWWorld.resolveDelegate(LTWWorld.java:111) at org.aspectj.weaver.World.resolveToReferenceType(World.java:467) at org.aspectj.weaver.World.resolve(World.java:308) at org.aspectj.weaver.patterns.WildTypePattern.lookupTypeInWorld(WildTypePattern.java:794) at org.aspectj.weaver.patterns.WildTypePattern.lookupTypeInWorldIncludingPrefixes(WildTypePattern.java:776) at org.aspectj.weaver.patterns.WildTypePattern.resolveBindingsFromFullyQualifiedTypeName(WildTypePattern.java:741) at org.aspectj.weaver.patterns.WildTypePattern.resolveBindings(WildTypePattern.java:676) at org.aspectj.weaver.patterns.TypePatternList.resolveBindings(TypePatternList.java:439) at org.aspectj.weaver.patterns.SignaturePattern.resolveBindings(SignaturePattern.java:86) at org.aspectj.weaver.patterns.KindedPointcut.resolveBindings(KindedPointcut.java:353) at org.aspectj.weaver.patterns.Pointcut.resolve(Pointcut.java:189) at org.aspectj.weaver.bcel.AtAjAttributes$LazyResolvedPointcutDefinition.getPointcut(AtAjAttributes.java:1879) at org.aspectj.weaver.patterns.ReferencePointcut.concretize1(ReferencePointcut.java:359) at org.aspectj.weaver.patterns.Pointcut.concretize(Pointcut.java:229) at org.aspectj.weaver.patterns.Pointcut.concretize(Pointcut.java:211) at org.aspectj.weaver.Advice.concretize(Advice.java:396) at org.aspectj.weaver.bcel.BcelAdvice.concretize(BcelAdvice.java:110) at org.aspectj.weaver.CrosscuttingMembers.addShadowMunger(CrosscuttingMembers.java:98) at org.aspectj.weaver.CrosscuttingMembers.addShadowMungers(CrosscuttingMembers.java:90) at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:749) at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:85) at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:69) at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:202) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:466) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:290) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:176) at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:271) at org.aspectj.weaver.loadtime.Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:276) at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:254) at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:90) at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54) at sun.instrument.TransformerManager.transform(Unknown Source) at sun.instrument.InstrumentationImpl.transform(Unknown Source) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.springframework.util.ClassUtils.forName(ClassUtils.java:257) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1256) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1227) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576) at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1304) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:315) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:394) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:594) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1654) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) |