|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
AspectWerkz fails to preprocess a classHi, I was preprocessing the OracleDriver (oracle.jdbc.driver.OracleDriver) using aspectwerkz and it failed while preprocessing. I got the following error. AW::WARNING - could not load class [oracle/security/pki/OracleWallet] as a resource in loader [sun.misc.Launcher$AppClassLoader@1d14e6] java.io.IOException: Class not found at org.codehaus.aspectwerkz.org.objectweb.asm.ClassReader.readClass(Ljava.io.InputStream;)[B(Unknown Source) at org.codehaus.aspectwerkz.org.objectweb.asm.ClassReader.<init>(Ljava.io.InputStream;)V(Unknown Source) at org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(Ljava.io.InputStream;Ljava.lang.ClassLoader;)Lorg.codehaus.aspectwerkz.reflect.ClassInfo;(AsmClassInfo.java:304) at org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(Ljava.io.InputStream;Ljava.lang.ClassLoader;Z)Lorg.codehaus.aspectwerkz.reflect.ClassInfo;(AsmClassInfo.java:331) at org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.createClassInfoFromStream(Ljava.lang.String;Ljava.lang.ClassLoader;Z)Lorg.codehaus.aspectwerkz.reflect.ClassInfo;(AsmClassInfo.java:790) at org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(Ljava.lang.String;Ljava.lang.ClassLoader;)Lorg.codehaus.aspectwerkz.reflect.ClassInfo;(AsmClassInfo.java:273) at org.codehaus.aspectwerkz.transform.inlining.weaver.ConstructorCallVisitor$ReplaceNewInstructionCodeAdapter.visitTypeInsn(ILjava.lang.String;)V(ConstructorCallVisitor.java:252) at org.codehaus.aspectwerkz.org.objectweb.asm.CodeAdapter.visitTypeInsn(ILjava.lang.String;)V(Unknown Source) at org.codehaus.aspectwerkz.transform.inlining.weaver.AfterObjectInitializationCodeAdapter.visitTypeInsn(ILjava.lang.String;)V(AfterObjectInitializationCodeAdapter.java:43) at org.codehaus.aspectwerkz.org.objectweb.asm.CodeAdapter.visitTypeInsn(ILjava.lang.String;)V(Unknown Source) at org.codehaus.aspectwerkz.org.objectweb.asm.CodeAdapter.visitTypeInsn(ILjava.lang.String;)V(Unknown Source) at org.codehaus.aspectwerkz.org.objectweb.asm.ClassReader.accept(Lorg.codehaus.aspectwerkz.org.objectweb.asm.ClassVisitor;[Lorg.codehaus.aspectwerkz.org.objectweb.asm.Attribute;Z)V(Unknown Source) at org.codehaus.aspectwerkz.transform.inlining.InliningWeavingStrategy.transform(Ljava.lang.String;Lorg.codehaus.aspectwerkz.transform.Context;)V(InliningWeavingStrategy.java:198) at org.codehaus.aspectwerkz.transform.AspectWerkzPreProcessor._preProcess(Ljava.lang.String;[BLjava.lang.ClassLoader;)Lorg.codehaus.aspectwerkz.transform.Context;(AspectWerkzPreProcessor.java:173) at org.codehaus.aspectwerkz.transform.AspectWerkzPreProcessor.preProcess(Ljava.lang.String;[BLjava.lang.ClassLoader;)[B(AspectWerkzPreProcessor.java:148) at org.codehaus.aspectwerkz.extension.jrockit.JRockitPreProcessor.preProcess(Ljava.lang.ClassLoader;Ljava.lang.String;[B)[B(JRockitPreProcessor.java:85) at jrockit.vm.ClassPreProcessorManager.notifyClassPreProcessor(ILjava.lang.String;[B)[B(Unknown Source) at jrockit.vm.Classes.defineClass0(ILjava.lang.String;[BII)I(Unknown Source) at jrockit.vm.Classes.defineClass(Ljava.lang.ClassLoader;Ljava.lang.String;[BII)Ljava.lang.Class;(Unknown Source) at java.lang.ClassLoader.defineClass(Ljava.lang.String;[BIILjava.security.ProtectionDomain;)Ljava.lang.Class;(Unknown Source) at java.security.SecureClassLoader.defineClass(Ljava.lang.String;[BIILjava.security.CodeSource;)Ljava.lang.Class;(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(Ljava.lang.String;Lsun.misc.Resource;)Ljava.lang.Class;(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(Ljava.net.URLClassLoader;Ljava.lang.String;Lsun.misc.Resource;)Ljava.lang.Class;(URLClassLoader.java:55) at java.net.URLClassLoader$1.run()Ljava.lang.Object;(URLClassLoader.java:194) at jrockit.vm.AccessController.do_privileged_exc(Ljava.security.PrivilegedExceptionAction;Ljava.security.AccessControlContext;I)Ljava.lang.Object;(Unknown Source) at jrockit.vm.AccessController.doPrivileged(Ljava.security.PrivilegedExceptionAction;Ljava.security.AccessControlContext;)Ljava.lang.Object;(Unknown Source) at java.net.URLClassLoader.findClass(Ljava.lang.String;)Ljava.lang.Class;(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(Ljava.lang.String;Z)Ljava.lang.Class;(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Ljava.lang.String;Z)Ljava.lang.Class;(Launcher.java:274) at java.lang.ClassLoader.loadClass(Ljava.lang.String;)Ljava.lang.Class;(Unknown Source) at java.lang.ClassLoader.loadClassFromNative(II)Ljava.lang.Class;(Unknown Source) at jrockit.vm.Classes.defineClass0(ILjava.lang.String;[BII)I(Unknown Source) I did some research and found that if oraclepki.jar which has the OracleWallet class is not in the classpath, we get this error. If I add that to the classpath along with ojdbc14.jar, we do not get this error. However the oraclepki.jar is not mandatory for oracle driver to work, so aspectwerkz preprocessor should be able to preprocess the OracleDriver even if oraclepki.jar is not in classpath. I tried to look through the source code and saw that even if we fail to obtain a dependent class as stream, we still call new ASMClassInfo(stream) on it which causes this exception and hence complete preprocessing fails. I looked at the CVS repository and see that there has been some change in version 1.15 of AsmClassInfo which probably resulted in this. (http://cvs.aspectwerkz.codehaus.org/browse/aspectwerkz/aspectwerkz4/src/main/org/codehaus/aspectwerkz/reflect/impl/asm/AsmClassInfo.java?r1=1.14&r2=1.15) if (componentClassAsStream == null) { // might be more than one dimension if (componentName.indexOf('[') > 0) { return getClassInfo(componentName, loader); } System.out.println( "AW::WARNING - could not load class [" + componentName + "] as a resource in loader [" + loader + "]" ); componentInfo = new ClassInfo.NullClassInfo(); } //The 1.14 version returned the ClassInfo.NullClassInfo() if componentClassAsStream was null and did not proceed further try { componentInfo = AsmClassInfo.getClassInfo(componentClassAsStream, loader, lazyAttributes); } finally { try { componentClassAsStream.close(); } catch (Exception e) { ; } } Any help with this will be greatly appreciated Thanks Much Amit Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. |
| Free embeddable forum powered by Nabble | Forum Help |