Bug 72150 - AJC possible bug with static nested classes
Summary: AJC possible bug with static nested classes
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.2.1 M1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 1.2.1   Edit
Assignee: Adrian Colyer CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-08-18 03:27 EDT by Hristo Stoyanov CLA
Modified: 2004-10-21 04:33 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Hristo Stoyanov CLA 2004-08-18 03:27:01 EDT
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
Comment 1 Andrew Clement CLA 2004-08-18 03:30:26 EDT
Hristo, can you send me a built jar that fails binary weaving?  I will try and
recreate it here too.

Andy.
Comment 2 Andrew Clement CLA 2004-08-24 03:21:59 EDT
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.
Comment 3 Andrew Clement CLA 2004-08-26 03:22:29 EDT
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)
Comment 4 Andrew Clement CLA 2004-08-26 06:58:47 EDT
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;
Comment 5 Andrew Clement CLA 2004-08-27 06:08:04 EDT
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.
Comment 6 Andrew Clement CLA 2004-08-28 12:32:56 EDT
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
Comment 7 Andrew Clement CLA 2004-09-01 03:29:41 EDT
Closing bug as fixed - please reopen Hristo if the fix doesn't work for you ...
Comment 8 Adrian Colyer CLA 2004-10-21 04:33:06 EDT
Fix released as part of AspectJ 1.2.1