Community
Participate
Working Groups
AJC fails to find nested static classes during binary-weaving analysis if the classes have been previously compiled with J2SE5.0 javac compiler with options: -source 1.5/ - target 1.5 Note, that the nested static classes are not necessarily subject to bytecode weaving - AJC merely fails to detect them in the JARS for its analysis. This issue disappears when the .java sources are pre-compiled with - source/target 1.4, regardless if the javac compiler comes from the J2SE1.4 or J2SE5.0 distribution. This issue is distinct form Bug #71548, since no 5.0 source code processing is required from AJC ever. Thanks, Hristo
Hristo, can you send me a built jar that fails binary weaving? I will try and recreate it here too. Andy.
Hi, We have just built a version of AspectJ that includes some rudimentary dump support - this allows us to collect diagnostic information when things go wrong. I'd like to try it out for the first time on this bug. The version of AspectJ required is available here (the usual place): BUILD COMPLETE - build.356 Date of build: 08/23/2004 16:06:44 Time to build: 125 minutes 0 seconds Last changed: 08/23/2004 14:40:33 Latest good AspectJ jar available at: download.eclipse.org/technology/ajdt/dev/aspectj-DEVELOPMENT.jar Please can you retry your failing Java 1.5 scenario with this version. AND in order to cause it to dump on error (it normally just dumps on abort), you will need to set this property: org.aspectj.weaver.Dump.condition=error If that works then when the compiler finishes after reporting your 'Cant find type' message it will produce an ajcore.XXX file on the disk (XXX is a date/time stamp). Can you send me the ajcore file? That will enable me to tell which route to can't find type is having problems with the 1.5 generated code. many thanks.
Thanks to Hristo for trying out the brand new dump support in AspectJ. We got the following ajcore which tells me the route we took to the 'cant find type' problem :) AspectJ Compiler DEVELOPMENT built on Wednesday Aug 25, 2004 at 17:18:41 GMT ---- Dump Properties --- Dump file: ajcore.20040825.134402.453.txt Dump reason: error Dump on exception: true Dump at exit condition: error ---- System Properties --- java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition sun.boot.library.path=c:\java\j2sdk5\jre\bin java.vm.version=1.5.0-beta3-b59 ant.library.dir=C:\java\apache-ant\lib java.vm.vendor=Sun Microsystems Inc. java.vendor.url=http://java.sun.com/ path.separator=; java.vm.name=Java HotSpot(TM) Client VM file.encoding.pkg=sun.io user.country=US sun.os.patch.level=Service Pack 2 java.vm.specification.name=Java Virtual Machine Specification user.dir=C:\projects\marketedge java.runtime.version=1.5.0-beta3-b59 java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment java.endorsed.dirs=c:\java\j2sdk5\jre\lib\endorsed os.arch=x86 java.io.tmpdir=C:\DOCUME~1\hristo\LOCALS~1\Temp\ line.separator= java.vm.specification.vendor=Sun Microsystems Inc. user.variant= os.name=Windows XP ant.home=c:\java\apache-ant sun.jnu.encoding=Cp1252 java.library.path=c:\java\j2sdk5\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\util\cvsnt;C:\util\xp-tools\;C:\Program Files\Rational\common;C:\Program Files\Common Files\Roxio Shared\DLLShared java.specification.name=Java Platform API Specification java.class.version=49.0 sun.management.compiler=HotSpot Client Compiler os.version=5.1 org.aspectj.weaver.Dump.condition=error user.home=C:\Documents and Settings\hristo user.timezone=America/Los_Angeles java.awt.printerjob=sun.awt.windows.WPrinterJob file.encoding=Cp1252 java.specification.version=1.5 java.class.path=c:\java\apache-ant\lib\ant-launcher.jar;C:\java\apache-ant\lib\ant-antlr.jar;C:\java\apache-ant\lib\ant-apache-bcel.jar;C:\java\apache-ant\lib\ant-apache-bsf.jar;C:\java\apache-ant\lib\ant-apache-log4j.jar;C:\java\apache-ant\lib\ant-apache-oro.jar;C:\java\apache-ant\lib\ant-apache-regexp.jar;C:\java\apache-ant\lib\ant-apache-resolver.jar;C:\java\apache-ant\lib\ant-commons-logging.jar;C:\java\apache-ant\lib\ant-commons-net.jar;C:\java\apache-ant\lib\ant-icontract.jar;C:\java\apache-ant\lib\ant-jai.jar;C:\java\apache-ant\lib\ant-javamail.jar;C:\java\apache-ant\lib\ant-jdepend.jar;C:\java\apache-ant\lib\ant-jmf.jar;C:\java\apache-ant\lib\ant-jsch.jar;C:\java\apache-ant\lib\ant-junit.jar;C:\java\apache-ant\lib\ant-launcher.jar;C:\java\apache-ant\lib\ant-netrexx.jar;C:\java\apache-ant\lib\ant-nodeps.jar;C:\java\apache-ant\lib\ant-starteam.jar;C:\java\apache-ant\lib\ant-stylebook.jar;C:\java\apache-ant\lib\ant-swing.jar;C:\java\apache-ant\lib\ant-trax.jar;C:\java\a! pache-ant\lib\ant-vaj.jar;C:\java\apache-ant\lib\ant-weblogic.jar;C:\java\apache-ant\lib\ant-xalan1.jar;C:\java\apache-ant\lib\ant-xslp.jar;C:\java\apache-ant\lib\ant.jar;C:\java\apache-ant\lib\commons-net.jar;C:\java\apache-ant\lib\jakarta-oro.jar;C:\java\apache-ant\lib\xercesImpl.jar;C:\java\apache-ant\lib\xml-apis.jar;c:\java\j2sdk5\lib\tools.jar user.name=hristo java.vm.specification.version=1.0 java.home=c:\java\j2sdk5\jre sun.arch.data.model=32 user.language=en java.specification.vendor=Sun Microsystems Inc. awt.toolkit=sun.awt.windows.WToolkit java.vm.info=mixed mode java.version=1.5.0-beta3 java.ext.dirs=c:\java\j2sdk5\jre\lib\ext sun.boot.class.path=c:\java\j2sdk5\jre\lib\rt.jar;c:\java\j2sdk5\jre\lib\i18n.jar;c:\java\j2sdk5\jre\lib\sunrsasign.jar;c:\java\j2sdk5\jre\lib\jsse.jar;c:\java\j2sdk5\jre\lib\jce.jar;c:\java\j2sdk5\jre\lib\charsets.jar;c:\java\j2sdk5\jre\classes java.vendor=Sun Microsystems Inc. file.separator=\ java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi sun.io.unicode.encoding=UnicodeLittle sun.cpu.endian=little sun.desktop=windows sun.cpu.isalist= ---- Command Line --- -preserveAllLocals -g -target 1.4 -XlazyTjp -verbose -outjar C:\projects\marketedge\build\netbeans\modules\me_exceedsoft.map-1.0.jar -classpath C:\projects\marketedge\build\classes;C:\projects\marketedge\netbeans\modules\me_com.vividsolutions.jts-1.4.0.jar;C:\projects\marketedge\netbeans\modules\me_exceedsoft.aspects-1.0.jar;C:\projects\marketedge\netbeans\modules\me_exceedsoft.map-1.0.jar;C:\projects\marketedge\netbeans\modules\me_javax.units-0.01.jar;C:\projects\marketedge\netbeans\modules\me_javax.vectmath-1.3.jar;C:\projects\marketedge\netbeans\modules\me_org.apache.batik-1.5.1.jar;C:\projects\marketedge\netbeans\modules\me_org.garret.perst-231.jar;C:\projects\marketedge\netbeans\modules\me_org.geotools-2.0.jar;C:\projects\marketedge\netbeans\modules\me_org.geotools.shp-2.0.jar;C:\projects\marketedge\netbeans\modules\me_org.geotools.tiger-2.0.jar;C:\projects\marketedge\netbeans\modules\me_org.opengis-1.1.jar;C:\java\netbeans-3_6-platform\lib\core.jar;C:\java\netbeans-3_6-platform\lib\ext\boot.jar;C:\java\netbeans-3_6-platform\lib\openide-loaders.jar;C:\java\netbeans-3_6-platform\lib\openide.jar;C:\java\netbeans-! 3_6-platform\lib\updater.jar;C:\java\netbeans-3_6-platform\modules\autoload\core-output.jar;C:\java\netbeans-3_6-platform\modules\autoload\core-settings.jar;C:\java\netbeans-3_6-platform\modules\autoload\ext\jh-2.0_01.jar;C:\java\netbeans-3_6-platform\modules\autoload\javahelp-api.jar;C:\java\netbeans-3_6-platform\modules\autoload\openide-io.jar;C:\java\netbeans-3_6-platform\modules\autoload\terminalemulator.jar;C:\java\netbeans-3_6-platform\modules\autoupdate.jar;C:\java\netbeans-3_6-platform\modules\core-ui.jar;C:\java\netbeans-3_6-platform\modules\core-windows.jar;C:\java\netbeans-3_6-platform\modules\text.jar;C:\java\aspectj\lib\aspectjrt.jar;C:\java\aspectj\lib\aspectjtools.jar;C:\java\junit\junit.jar;C:\java\j2sdk5\jre\lib\ext -aspectpath C:\projects\marketedge\netbeans\modules\me_exceedsoft.aspects-1.0.jar;C:\projects\marketedge\netbeans\modules\me_org.geotools-2.0.jar;C:\projects\marketedge\netbeans\modules\me_com.vividsolutions.jts-1.4.0.jar -inpath C:\projects\marketedge\netbeans\modules\me_exceedsoft.map-1.0.jar ---- Full Classpath --- C:\projects\marketedge\netbeans\modules\me_exceedsoft.map-1.0.jar(60506 bytes) C:\projects\marketedge\netbeans\modules\me_exceedsoft.aspects-1.0.jar(11065 bytes) C:\projects\marketedge\netbeans\modules\me_org.geotools-2.0.jar(2354305 bytes) C:\projects\marketedge\netbeans\modules\me_com.vividsolutions.jts-1.4.0.jar(251132 bytes) c:\java\j2sdk5\jre\lib\rt.jar(37556071 bytes) c:\java\j2sdk5\jre\lib\i18n.jar(missing) c:\java\j2sdk5\jre\lib\sunrsasign.jar(missing) c:\java\j2sdk5\jre\lib\jsse.jar(548670 bytes) c:\java\j2sdk5\jre\lib\jce.jar(81615 bytes) c:\java\j2sdk5\jre\lib\charsets.jar(8627539 bytes) c:\java\j2sdk5\jre\classes(missing) c:\java\j2sdk5\jre\lib\ext\clibwrapper_jiio.jar(36136 bytes) c:\java\j2sdk5\jre\lib\ext\dnsns.jar(8179 bytes) c:\java\j2sdk5\jre\lib\ext\jai_codec.jar(213581 bytes) c:\java\j2sdk5\jre\lib\ext\jai_core.jar(1576540 bytes) c:\java\j2sdk5\jre\lib\ext\jai_imageio.jar(927714 bytes) c:\java\j2sdk5\jre\lib\ext\localedata.jar(802505 bytes) c:\java\j2sdk5\jre\lib\ext\mlibwrapper_jai.jar(41239 bytes) c:\java\j2sdk5\jre\lib\ext\sunjce_provider.jar(153036 bytes) c:\java\j2sdk5\jre\lib\ext\sunpkcs11.jar(173235 bytes) C:\projects\marketedge\build\classes(3 entries) C:\projects\marketedge\netbeans\modules\me_com.vividsolutions.jts-1.4.0.jar(251132 bytes) C:\projects\marketedge\netbeans\modules\me_exceedsoft.aspects-1.0.jar(11065 bytes) C:\projects\marketedge\netbeans\modules\me_exceedsoft.map-1.0.jar(60506 bytes) C:\projects\marketedge\netbeans\modules\me_javax.units-0.01.jar(25418 bytes) C:\projects\marketedge\netbeans\modules\me_javax.vectmath-1.3.jar(289947 bytes) C:\projects\marketedge\netbeans\modules\me_org.apache.batik-1.5.1.jar(4619743 bytes) C:\projects\marketedge\netbeans\modules\me_org.garret.perst-231.jar(188745 bytes) C:\projects\marketedge\netbeans\modules\me_org.geotools-2.0.jar(2354305 bytes) C:\projects\marketedge\netbeans\modules\me_org.geotools.shp-2.0.jar(66907 bytes) C:\projects\marketedge\netbeans\modules\me_org.geotools.tiger-2.0.jar(15113 bytes) C:\projects\marketedge\netbeans\modules\me_org.opengis-1.1.jar(163110 bytes) C:\java\netbeans-3_6-platform\lib\core.jar(2754600 bytes) C:\java\netbeans-3_6-platform\lib\ext\boot.jar(99458 bytes) C:\java\netbeans-3_6-platform\lib\openide-loaders.jar(1049966 bytes) C:\java\netbeans-3_6-platform\lib\openide.jar(3626032 bytes) C:\java\netbeans-3_6-platform\lib\updater.jar(123818 bytes) C:\java\netbeans-3_6-platform\modules\autoload\core-output.jar(321351 bytes) C:\java\netbeans-3_6-platform\modules\autoload\core-settings.jar(207743 bytes) C:\java\netbeans-3_6-platform\modules\autoload\ext\jh-2.0_01.jar(500623 bytes) C:\java\netbeans-3_6-platform\modules\autoload\javahelp-api.jar(104813 bytes) C:\java\netbeans-3_6-platform\modules\autoload\openide-io.jar(9252 bytes) C:\java\netbeans-3_6-platform\modules\autoload\terminalemulator.jar(289602 bytes) C:\java\netbeans-3_6-platform\modules\autoupdate.jar(581745 bytes) C:\java\netbeans-3_6-platform\modules\core-ui.jar(64094 bytes) C:\java\netbeans-3_6-platform\modules\core-windows.jar(1955608 bytes) C:\java\netbeans-3_6-platform\modules\text.jar(58277 bytes) C:\java\aspectj\lib\aspectjrt.jar(35619 bytes) C:\java\aspectj\lib\aspectjtools.jar(6045745 bytes) C:\java\junit\junit.jar(121070 bytes) C:\java\j2sdk5\jre\lib\ext(9 entries) ---- Compiler Messages --- info zipfile classpath entry does not exist: c:\java\j2sdk5\jre\lib\i18n.jar info zipfile classpath entry does not exist: c:\java\j2sdk5\jre\lib\sunrsasign.jar info directory classpath entry does not exist: c:\java\j2sdk5\jre\classes error at (no source information available) C:\projects\marketedge\netbeans\modules\me_exceedsoft.map-1.0.jar:0 can't find type [Lorg.geotools.data.DataStoreFactorySpi$Param; ---- org.aspectj.weaver.bcel.BcelWorld ---- Shadow mungers: (around(extraFlags: 1): (persingleton(org.garret.perst.aspectj.PersistenceAspect) && (execution(boolean org.garret.perst.aspectj.AutoPersist+.equals(java.lang.Object)) && (args(BindingTypePattern(java.lang.Object, 1)) && target(BindingTypePattern(org.garret.perst.aspectj.AutoPersist, 0)))))->boolean org.garret.perst.aspectj.PersistenceAspect.ajc$around$org_garret_perst_aspectj_PersistenceAspect$5$589ee725(org.garret.perst.aspectj.AutoPersist, java.lang.Object, org.aspectj.runtime.internal.AroundClosure)) (around(extraFlags: 1): (persingleton(org.garret.perst.aspectj.PersistenceAspect) && (execution(int org.garret.perst.aspectj.AutoPersist+.hashCode()) && target(BindingTypePattern(org.garret.perst.aspectj.AutoPersist, 0))))->int org.garret.perst.aspectj.PersistenceAspect.ajc$around$org_garret_perst_aspectj_PersistenceAspect$6$3f2d89d4(org.garret.perst.aspectj.AutoPersist, org.aspectj.runtime.internal.AroundClosure)) (around(extraFlags: 1): (persingleton(org.garret.perst.aspectj.SafeHashAspect) && (execution(int org.garret.perst.aspectj.SafeHashCode+.hashCode()) && target(BindingTypePattern(org.garret.perst.aspectj.SafeHashCode, 0))))->int org.garret.perst.aspectj.SafeHashAspect.ajc$around$org_garret_perst_aspectj_SafeHashAspect$1$7206641f(org.garret.perst.aspectj.SafeHashCode, org.aspectj.runtime.internal.AroundClosure)) (before: (persingleton(org.garret.perst.aspectj.PersistenceAspect) && ((execution( !static * ((org.garret.perst.Persistent+ && !org.garret.perst.Persistent) || (org.garret.perst.aspectj.AutoPersist+ && (!org.garret.perst.aspectj.StrictAutoPersist+ && !org.garret.perst.aspectj.AutoPersist))).*(..)) && !execution(void recursiveLoading())) && this(BindingTypePattern(org.garret.perst.IPersistent, 0))))->void org.garret.perst.aspectj.PersistenceAspect.ajc$before$org_garret_perst_aspectj_PersistenceAspect$1$272d304b(org.garret.perst.IPersistent)) (before: (persingleton(org.garret.perst.aspectj.PersistenceAspect) && (get( !static transient * org.garret.perst.aspectj.StrictAutoPersist+.*) && ((!within(org.garret.perst.*) && (!within(org.garret.perst.impl.*) && !within(org.garret.perst.aspectj.*))) && target(BindingTypePattern(org.garret.perst.aspectj.StrictAutoPersist, 0)))))->void org.garret.perst.aspectj.PersistenceAspect.ajc$before$org_garret_perst_aspectj_PersistenceAspect$2$f74b759f(org.garret.perst.aspectj.StrictAutoPersist)) (before: (persingleton(org.garret.perst.aspectj.PersistenceAspect) && (set( !static transient * (org.garret.perst.aspectj.AutoPersist+ && !org.garret.perst.aspectj.StrictAutoPersist+).*) && ((!within(org.garret.perst.*) && (!within(org.garret.perst.impl.*) && !within(org.garret.perst.aspectj.*))) && (!withincode(new(..)) && target(BindingTypePattern(org.garret.perst.aspectj.AutoPersist, 0))))))->void org.garret.perst.aspectj.PersistenceAspect.ajc$before$org_garret_perst_aspectj_PersistenceAspect$4$83a0862a(org.garret.perst.aspectj.AutoPersist)) (before: (persingleton(org.garret.perst.aspectj.PersistenceAspect) && (set( !static transient * org.garret.perst.aspectj.StrictAutoPersist+.*) && ((!within(org.garret.perst.*) && (!within(org.garret.perst.impl.*) && !within(org.garret.perst.aspectj.*))) && target(BindingTypePattern(org.garret.perst.aspectj.StrictAutoPersist, 0)))))->void org.garret.perst.aspectj.PersistenceAspect.ajc$before$org_garret_perst_aspectj_PersistenceAspect$3$4d3610ab(org.garret.perst.aspectj.StrictAutoPersist)) Type mungers: (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.IPersistent.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.aspectj.StrictAutoPersist.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.aspectj.StrictAutoPersist.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.aspectj.AutoPersist.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void java.lang.Object.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.aspectj.AutoPersist.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.aspectj.AutoPersist.())) (BcelTypeMunger ResolvedTypeMunger(Field, int org.garret.perst.aspectj.AutoPersist.state)) (BcelTypeMunger ResolvedTypeMunger(Field, int org.garret.perst.aspectj.AutoPersist.oid)) (BcelTypeMunger ResolvedTypeMunger(Field, org.garret.perst.Storage org.garret.perst.aspectj.AutoPersist.storage)) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.writeExternal(java.io.ObjectOutput))) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.readExternal(java.io.ObjectInput))) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.finalize())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.invalidate())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.onLoad())) (BcelTypeMunger ResolvedTypeMunger(Method, org.garret.perst.Storage org.garret.perst.aspectj.AutoPersist.getStorage())) (BcelTypeMunger ResolvedTypeMunger(Method, boolean org.garret.perst.aspectj.AutoPersist.recursiveLoading())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.deallocate())) (BcelTypeMunger ResolvedTypeMunger(Method, int org.garret.perst.aspectj.AutoPersist.getOid())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.modify())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.store())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.makePersistent(org.garret.perst.Storage))) (BcelTypeMunger ResolvedTypeMunger(Method, boolean org.garret.perst.aspectj.AutoPersist.isPersistent())) (BcelTypeMunger ResolvedTypeMunger(Method, boolean org.garret.perst.aspectj.AutoPersist.isModified())) (BcelTypeMunger ResolvedTypeMunger(Method, boolean org.garret.perst.aspectj.AutoPersist.isRaw())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.loadAndModify())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.load())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.commit())) (BcelTypeMunger ResolvedTypeMunger(Method, void org.garret.perst.aspectj.AutoPersist.assignOid(org.garret.perst.Storage, int, boolean))) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.IPersistent.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.aspectj.SafeHashCode.())) (BcelTypeMunger ResolvedTypeMunger(PrivilegedAccess, void org.garret.perst.aspectj.AutoPersist.())) Cant find type problems: java.lang.RuntimeException: Can't find type [Lorg.geotools.data.DataStoreFactorySpi$Param; at org.aspectj.weaver.World.resolve(World.java:133) at org.aspectj.weaver.World.resolve(World.java:105) at org.aspectj.weaver.TypeX.resolve(TypeX.java:538) at org.aspectj.weaver.patterns.ThisOrTargetPointcut.match(ThisOrTargetPointcut.java:71) at org.aspectj.weaver.patterns.AndPointcut.match(AndPointcut.java:43) at org.aspectj.weaver.patterns.AndPointcut.match(AndPointcut.java:43) at org.aspectj.weaver.patterns.AndPointcut.match(AndPointcut.java:43) at org.aspectj.weaver.ShadowMunger.match(ShadowMunger.java:62) at org.aspectj.weaver.Advice.match(Advice.java:91) at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:1126) at org.aspectj.weaver.bcel.BcelClassWeaver.matchInvokeInstruction(BcelClassWeaver.java:1115) at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:987) at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:827) at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:348) at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:83) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:740) at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:705) at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:632) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:575) at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.weave(AjCompilerAdapter.java:239) at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.afterCompiling(AjCompilerAdapter.java:114) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:383) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:678) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:168) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:102) at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:109) at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) at org.aspectj.tools.ajc.Main.run(Main.java:291) at org.aspectj.tools.ajc.Main.runMain(Main.java:227) at org.aspectj.tools.ant.taskdefs.AjcTask.executeInSameVM(AjcTask.java:1158) at org.aspectj.tools.ant.taskdefs.AjcTask.execute(AjcTask.java:955) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) at org.apache.tools.ant.Task.perform(Task.java:364) at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:64) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) at org.apache.tools.ant.Task.perform(Task.java:364) at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:377) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) at org.apache.tools.ant.Task.perform(Task.java:364) at org.apache.tools.ant.Target.execute(Target.java:341) at org.apache.tools.ant.Target.performTasks(Target.java:369) at org.apache.tools.ant.Project.executeTarget(Project.java:1214) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:386) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) at org.apache.tools.ant.Task.perform(Task.java:364) at org.apache.tools.ant.Target.execute(Target.java:341) at org.apache.tools.ant.Target.performTasks(Target.java:369) at org.apache.tools.ant.Project.executeTarget(Project.java:1214) at org.apache.tools.ant.Project.executeTargets(Project.java:1062) at org.apache.tools.ant.Main.runBuild(Main.java:673) at org.apache.tools.ant.Main.startAnt(Main.java:188) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:196) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)
Thanks for that ajcore Hristo, it really helped! Some progress. The problem appears to be the bytecode generated for a call to clone() on an array type. I notice that you make a call: return (DataStoreFactorySpi.Param[])PARAMS_ARRAY.clone() in PERSTDataStoreFactory.getParametersInfo() The bytecode generated differs between 1.4 and 1.5. Under 1.4 it becomes an invokevirtual #50: //Method java/lang/Object.clone():()Ljava/lang/Object; Under 1.5 it becomes: invokevirtual #45: //Method "[Lorg/geotools/data/DataStoreFactorySpi$Param;".clone:()Ljava/lang/Object;
Without suitable documentation available on what the changes are from 1.4/1.5 - we believe this is a bug fix that sun has made. In 1.4 they were incorrectly making the clone call against type Object. In 1.5 they now make the clone call against the array type. The fix is as follows. In TypeX where we convert a name to a signature (nameToSignature()) - we were incorrectly converting "[LB$D;" into "L[LB$D;;". We weren't checking if it was already valid (in fact there is a comment in nameToSignature() that said it ought to be doing more checking). It now does not incorrectly alter the array signature - this fixes the cant find type message. Yesterday, Erik talked about whether getDeclaredMethods() on ResolvedTypeX.Array should return the clone() method (it doesn't at the moment). I have not needed to change it in order for my testcase to pass. Fix checked in - waiting for build. many thanks to Hristo for using a few development builds to help track down this bug.
Fix available: BUILD COMPLETE - build.364 Date of build: 08/27/2004 22:17:38 Time to build: 95 minutes 15 seconds Last changed: 08/27/2004 17:02:18 Latest good AspectJ jar available at: download.eclipse.org/technology/ajdt/dev/aspectj-DEVELOPMENT.jar
Closing bug as fixed - please reopen Hristo if the fix doesn't work for you ...
Fix released as part of AspectJ 1.2.1