Bug 49317 - Crash on weaving 3rd party library with missing dependencies
Summary: Crash on weaving 3rd party library with missing dependencies
Status: RESOLVED INVALID
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.1.1   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Jim Hugunin CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-12-23 12:45 EST by Ron Bodkin CLA
Modified: 2004-07-21 15:07 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 Ron Bodkin CLA 2003-12-23 12:45:06 EST
I hit this problem in trying to weave a 3rd party library (from Oracle) after

manifest not copied: 'META-INF/MANIFEST.MF' in JAR 'D:\devel\dl\toplink10g\topli
nk\jlib\toplink.jar'
can't find type weblogic.ejb20.interfaces.BeanManager
can't find type javax.ejb.deployment.EntityDescriptor
can't find type org.omg.CosTransactions._SynchronizationImplBase
can't find type com.inprise.vbroker.CORBA.portable.ObjectImpl
can't find type com.inprise.vbroker.CORBA.Object
can't find type com.oracle.server.ejb.persistence.pm.PersistenceManager
can't find type javax.jdo.Transaction
can't find type com.ibm.ivj.ejb.tools.analyzer.EJBean
can't find type javax.jdo.PersistenceManagerFactory
can't find type com.ibm.ivj.ejb.tools.codeGenerator.EJBGenRemoteHome
can't find type javax.xml.bind.Unmarshaller
can't find type com.ibm.ivj.ejb.tools.codeGenerator.EJBGenRemoteEntity
can't find type weblogic.ejb20.persistence.spi.CMPCodeGenerator
can't find type oracle.xml.parser.v2.NSResolver
can't find type weblogic.ejb20.persistence.spi.PersistenceManager
can't find type weblogic.ejb20.persistence.spi.CMPDeployer
can't find type oracle.xml.parser.v2.XMLPrintDriver
can't find type com.ibm.ivj.ejb.tools.deployment.EJBDeploy
can't find type javax.jdo.Extent
can't find type javax.jdo.Query
can't find type com.ibm.ivj.ejb.tools.codeGenerator.EJBGenHomeEntity
can't find type javax.xml.bind.UnmarshallerHandler
can't find type oracle.xml.parser.v2.DocumentBuilder
can't find type javax.xml.bind.Validator
can't find type javax.jdo.PersistenceManager
can't find type com.ibm.ejs.persistence.EJSFinder
can't find type javax.xml.bind.Marshaller
can't find type com.ibm.ejs.persistence.EJSJDBCFinder
can't find type com.ibm.ejs.persistence.EJSJDBCPersister
can't find type weblogic.ejb20.persistence.spi.JarDeployment
can't find type com.ibm.ivj.ejb.tools.codeGenerator.EJBGenPersister
can't find type weblogic.rmi.server.UnicastRemoteObject
can't find type javax.xml.bind.JAXBContext
can't find type com.oracle.server.ejb.persistence.deployment.EntityDescriptor
trouble in:
public class oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping.SerializedObjec
tMappingGenerator extends oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping.Di
rectToFieldMappingGenerator implements ajee.logging.Loggable:
  public static final org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0
  public void <init>(com.oracle.server.ejb.persistence.deployment.EntityDescript
or, oracle.toplink.publicinterface.Descriptor, String, String, java.util.Collect
ion, oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping.NamingGenerator):
                    ALOAD_0     // oracle.toplink.internal.ejb.cmp.oc4j.defaultm
apping.SerializedObjectMappingGenerator this   (line 23)
                    ALOAD_1     // com.oracle.server.ejb.persistence.deployment.
EntityDescriptor arg0
                    ALOAD_2     // oracle.toplink.publicinterface.Descriptor arg
1
                    ALOAD_3     // java.lang.String arg2
                    ALOAD 4     // java.lang.String arg3
                    ALOAD 5     // java.util.Collection arg4
                    ALOAD 6     // oracle.toplink.internal.ejb.cmp.oc4j.defaultm
apping.NamingGenerator arg5
                    INVOKESPECIAL oracle.toplink.internal.ejb.cmp.oc4j.defaultma
pping.DirectToFieldMappingGenerator.<init> (Lcom/oracle/server/ejb/persistence/d
eployment/EntityDescriptor;Loracle/toplink/publicinterface/Descriptor;Ljava/lang
/String;Ljava/lang/String;Ljava/util/Collection;Loracle/toplink/internal/ejb/cmp
/oc4j/defaultmapping/NamingGenerator;)V
    constructor-execution(void oracle.toplink.internal.ejb.cmp.oc4j.defaultmappi
ng.SerializedObjectMappingGenerator.<init>(com.oracle.server.ejb.persistence.dep
loyment.EntityDescriptor, oracle.toplink.publicinterface.Descriptor, java.lang.S
tring, java.lang.String, java.util.Collection, oracle.toplink.internal.ejb.cmp.o
c4j.defaultmapping.NamingGenerator))
    |               RETURN   (line 24)
    constructor-execution(void oracle.toplink.internal.ejb.cmp.oc4j.defaultmappi
ng.SerializedObjectMappingGenerator.<init>(com.oracle.server.ejb.persistence.dep
loyment.EntityDescriptor, oracle.toplink.publicinterface.Descriptor, java.lang.S
tring, java.lang.String, java.util.Collection, oracle.toplink.internal.ejb.cmp.o
c4j.defaultmapping.NamingGenerator))
  end public void <init>(com.oracle.server.ejb.persistence.deployment.EntityDesc
riptor, oracle.toplink.publicinterface.Descriptor, String, String, java.util.Col
lection, oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping.NamingGenerator)

  public void generate():
    method-execution(void oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping.Se
rializedObjectMappingGenerator.generate())
    |               NEW oracle.toplink.mappings.SerializedObjectMapping   (line
30)
    |               DUP
    | constructor-call(void oracle.toplink.mappings.SerializedObjectMapping.<ini
t>())
    | |             INVOKESPECIAL oracle.toplink.mappings.SerializedObjectMappin
g.<init> ()V
    | constructor-call(void oracle.toplink.mappings.SerializedObjectMapping.<ini
t>())
    |               ASTORE_1
    |               ALOAD_1   (line 31)
    |               ALOAD_0     // oracle.toplink.internal.ejb.cmp.oc4j.defaultm
apping.SerializedObjectMappingGenerator this
    | field-get(java.lang.String oracle.toplink.internal.ejb.cmp.oc4j.defaultmap
ping.SerializedObjectMappingGenerator.cmpFieldName)
    | |             GETFIELD oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping
.SerializedObjectMappingGenerator.cmpFieldName Ljava/lang/String;
    | field-get(java.lang.String oracle.toplink.internal.ejb.cmp.oc4j.defaultmap
ping.SerializedObjectMappingGenerator.cmpFieldName)
    | method-call(void oracle.toplink.mappings.SerializedObjectMapping.setAttrib
uteName(java.lang.String))
    | |             INVOKEVIRTUAL oracle.toplink.mappings.SerializedObjectMappin
g.setAttributeName (Ljava/lang/String;)V
    | method-call(void oracle.toplink.mappings.SerializedObjectMapping.setAttrib
uteName(java.lang.String))
    |               ALOAD_1   (line 32)
    |               ALOAD_0     // oracle.toplink.internal.ejb.cmp.oc4j.defaultm
apping.SerializedObjectMappingGenerator this
    | field-get(java.lang.String oracle.toplink.internal.ejb.cmp.oc4j.defaultmap
ping.SerializedObjectMappingGenerator.mappedTblFieldName)
    | |             GETFIELD oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping
.SerializedObjectMappingGenerator.mappedTblFieldName Ljava/lang/String;
    | field-get(java.lang.String oracle.toplink.internal.ejb.cmp.oc4j.defaultmap
ping.SerializedObjectMappingGenerator.mappedTblFieldName)
    | method-call(void oracle.toplink.mappings.SerializedObjectMapping.setFieldN
ame(java.lang.String))
    | |             INVOKEVIRTUAL oracle.toplink.mappings.SerializedObjectMappin
g.setFieldName (Ljava/lang/String;)V
    | method-call(void oracle.toplink.mappings.SerializedObjectMapping.setFieldN
ame(java.lang.String))
    |               ALOAD_0     // oracle.toplink.internal.ejb.cmp.oc4j.defaultm
apping.SerializedObjectMappingGenerator this   (line 33)
    | field-get(oracle.toplink.publicinterface.Descriptor oracle.toplink.interna
l.ejb.cmp.oc4j.defaultmapping.SerializedObjectMappingGenerator.tlDesc)
    | |             GETFIELD oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping
.SerializedObjectMappingGenerator.tlDesc Loracle/toplink/publicinterface/Descrip
tor;
    | field-get(oracle.toplink.publicinterface.Descriptor oracle.toplink.interna
l.ejb.cmp.oc4j.defaultmapping.SerializedObjectMappingGenerator.tlDesc)
    |               ALOAD_1
    | method-call(oracle.toplink.mappings.DatabaseMapping oracle.toplink.publici
nterface.Descriptor.addMapping(oracle.toplink.mappings.DatabaseMapping))
    | |             INVOKEVIRTUAL oracle.toplink.publicinterface.Descriptor.addM
apping (Loracle/toplink/mappings/DatabaseMapping;)Loracle/toplink/mappings/Datab
aseMapping;
    | method-call(oracle.toplink.mappings.DatabaseMapping oracle.toplink.publici
nterface.Descriptor.addMapping(oracle.toplink.mappings.DatabaseMapping))
    |               POP
    |               RETURN   (line 34)
    method-execution(void oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping.Se
rializedObjectMappingGenerator.generate())
  end public void generate()

end public class oracle.toplink.internal.ejb.cmp.oc4j.defaultmapping.SerializedO
bjectMappingGenerator
ABORT
Exception thrown from AspectJ 1.1.1

This might be logged as a bug already -- find current bugs at
  http://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Compiler

Bugs for exceptions thrown have titles File:line from the top stack,
e.g., "SomeFile.java:243"

If you don't find the exception below in a bug, please add a new bug
at http://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ
To make the bug a priority, please include a test program
that can reproduce this exception.
Invalid method signature: <missing>
Invalid method signature: <missing>
java.lang.ClassFormatError: Invalid method signature: <missing>
        at org.apache.bcel.classfile.Utility.typeOfSignature(Utility.java:1019)
        at org.apache.bcel.generic.Type.getType(Type.java:159)
        at org.aspectj.weaver.bcel.BcelWorld.makeBcelType(BcelWorld.java:153)
        at org.aspectj.weaver.bcel.BcelVar.createCopyFrom(BcelVar.java:64)
        at org.aspectj.weaver.bcel.BcelShadow.initializeArgVars(BcelShadow.java:
912)
        at org.aspectj.weaver.bcel.BcelShadow.getArgVar(BcelShadow.java:761)
        at org.aspectj.weaver.bcel.BcelShadow.makeArgsObjectArray(BcelShadow.jav
a:854)
        at org.aspectj.weaver.bcel.BcelShadow.getThisJoinPointBcelVar(BcelShadow
.java:797)
        at org.aspectj.weaver.bcel.BcelShadow.getThisJoinPointVar(BcelShadow.jav
a:771)
        at org.aspectj.weaver.bcel.BcelAdvice.specializeOn(BcelAdvice.java:95)
        at org.aspectj.weaver.bcel.BcelShadow.prepareForMungers(BcelShadow.java:
254)
        at org.aspectj.weaver.Shadow.implement(Shadow.java:312)
        at org.aspectj.weaver.bcel.BcelClassWeaver.implement(BcelClassWeaver.jav
a:1006)
        at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:29
9)
        at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:77
)
        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:417)
        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:390)
        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:327)
        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:268)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.weaveAndGenerat
eClassFiles(AjBuildManager.java:254)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuild
Manager.java:156)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBu
ildManager.java:70)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:99)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:53)
        at org.aspectj.tools.ajc.Main.run(Main.java:217)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:155)
        at org.aspectj.tools.ajc.Main.main(Main.java:72)


1 fail|abort, 34 errors, 1 warning
Comment 1 Jim Hugunin CLA 2004-03-18 14:41:33 EST
Marking this as INVALID since I can't reproduce.  I wish there was a 
NOT_REPRODUCIBLE setting to use instead.  Reopen this if you see it again 
under 1.2 preferrably with a test case to reproduce.
Comment 2 Oliver CLA 2004-07-21 15:07:10 EDT
How can I reopen this bug? I have the same problem with AspectJ 1.2 under Linux.
It seems that the compiler needs some infos/dependencies from other classes not
in the jar file. As a workaround I give the compiler some external jars using
the -classpath attribut.

Here is the workaround call:
ajc -classpath
jfachwert-bin.jar:libs/lapext.jar:libs/ps-edgextend.jar:libs/beandt.jar:libs/mqs/com.ibm.mq.jar:libs/jdom.jar:/usr/java/aspectj/lib/aspectjrt.jar
-inpath basis-bin.jar -sourceroots Logging/src -outjar out/log-basis-bin.jar