Community
Participate
Working Groups
Problem: Getting a java.lang.ClassCastException (SourceTypeBinding to a BinaryTypeBinding) in 30M6 within jdt.core.dom.TypeBinding.getKey(TypeBinding.java:411) Upgrading from M4 to M6 (we skipped M5 :-) we are noting a problem related to the changes to getKey and BinaryTypeBindings. Not sure what is going on here. We speculate that this is related to the change in getKey where the type is checked to see if it is a local type (inner and anonymous classes) -- we think *maybe* it should be checking if it is an anonymous typebecause inner classes can appear within binary types. We are basing this idea on a comment in the new code. Jan 9, 2004 9:09:21 PM edu.cmu.cs.fluid.mvc.version.ModificationManagerImpl executeAtomically SEVERE: Exception from Runnable java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding at org.eclipse.jdt.core.dom.TypeBinding.getKey(TypeBinding.java:411) at org.eclipse.jdt.core.dom.MethodBinding.getKey(MethodBinding.java:170) at edu.cmu.cs.fluid.eclipse.adapter.Binding.genKey(Binding.java:375) (and so on in our code...)
Can you provide steps to reproduce ?
I will investigate as soon as I have steps to reproduce.
Olivier & Philippe: Edwin Chan (chance@cs...) is working on it now. Sadly, our 110 kSLOC research analysis system attached to jdt.core ( For info see http://www.fluid.cs.cmu.edu ) was looking at Log4j (25 kSLOC), so pulling out an example is a bit of work :-) We will post it as soon as possible.
Created attachment 7411 [details] Project to demonstrate bug I've attached a plug-in project that should demonstrate the bug when you run the run-time workbench. It does however require that the run-time workspace have at least one Java project to work properly.
I will investigate it using your test case. Thanks for producing one.
What do you need in your java project to reproduce the problem? I get this: Initialized. Found P Found A.java in Key = java.lang/Object Key = java.lang/Object No compilation units in 'com.sun.swing.internal. No compilation units in 'com.sun.corba.se.internal.orbutil. No compilation units in 'javax.swing.undo. No compilation units in 'javax.imageio.plugins. No compilation units in 'com.sun.java.swing.plaf. No compilation units in 'com.sun.corba.se.interceptor. No compilation units in 'com.sun.imageio.plugins. No compilation units in 'com.sun.corba.se.extension. No compilation units in 'com.sun.corba.se.ActivationIDL. No compilation units in 'com.sun.jndi.toolkit.url. No compilation units in 'javax.naming. No compilation units in 'com.sun.org. No compilation units in 'org.apache.xml.dtm. No compilation units in 'javax.swing.plaf.multi. No compilation units in 'org.w3c. No compilation units in 'java.nio.channels. No compilation units in 'sun.security.tools. No compilation units in 'com.sun.corba.se.ActivationIDL.LocatorPackage. No compilation units in 'org.apache.crimson.util. No compilation units in 'javax.transaction.xa. No compilation units in 'java.lang.reflect. No compilation units in 'com.sun.corba.se.org.omg.CORBA. No compilation units in 'sun.security.provider. No compilation units in 'org.apache.xalan.serialize. No compilation units in 'org.apache.xalan.res. No compilation units in 'sun.awt.im. No compilation units in 'org.apache.xpath.operations. No compilation units in 'sun.security.jgss. No compilation units in 'sun.net.www.protocol.gopher. No compilation units in 'org.omg.stub.java.rmi. No compilation units in 'org.apache.xml.utils.res. No compilation units in 'java.beans.beancontext. No compilation units in 'com.sun.corba.se.internal.PCosNaming. No compilation units in 'sunw.io. No compilation units in 'com.sun.corba.se.internal.DynamicAny. No compilation units in 'com.sun.jndi.ldap.pool. No compilation units in 'sun.net.spi. No compilation units in 'java.awt.peer. No compilation units in 'javax.rmi.CORBA. No compilation units in 'sun.awt.print.resources. No compilation units in 'org.apache.xml.utils.synthetic. No compilation units in 'sun.beans. No compilation units in 'sun.dc. No compilation units in 'sun.net.www.protocol.http. No compilation units in 'sun.print. No compilation units in 'sun.tools. No compilation units in 'sun.security.krb5.internal.rcache. No compilation units in 'org.omg.CORBA_2_3. No compilation units in 'com.sun.jndi.url.iiopname. No compilation units in 'java.awt.geom. No compilation units in 'com.sun.java.swing.plaf.windows. No compilation units in 'org.apache.xpath.compiler. No compilation units in 'sun.awt.datatransfer. No compilation units in 'javax.swing.text.html. No compilation units in 'com.sun.security.auth.module. No compilation units in 'com.sun.jndi.dns. No compilation units in 'org. No compilation units in 'javax.swing.plaf.metal. No compilation units in 'javax.swing.colorchooser. No compilation units in 'org.omg.IOP.CodecFactoryPackage. No compilation units in 'sun.net.www.protocol.mailto. No compilation units in 'java.awt.datatransfer. No compilation units in 'org.apache.xalan.processor. No compilation units in 'sun.applet. No compilation units in 'java.util.prefs. No compilation units in 'org.apache.xalan. No compilation units in 'org.omg.CosNaming. No compilation units in 'javax.security.auth.x500. No compilation units in 'javax.swing.border. No compilation units in 'org.omg.CORBA. No compilation units in 'org.omg.IOP. No compilation units in 'org.omg.CosNaming.NamingContextExtPackage. No compilation units in 'com.sun.swing.internal.plaf.basic. No compilation units in 'sun. No compilation units in 'org.omg.CORBA.DynAnyPackage. No compilation units in 'java.applet. No compilation units in 'com.sun.security.auth. No compilation units in 'javax.naming.directory. No compilation units in 'sun.rmi.transport.tcp. No compilation units in 'com.sun.corba.se.ActivationIDL.RepositoryPackage. No compilation units in 'com.sun.jndi.ldap. No compilation units in 'org.apache.crimson.tree.resources. No compilation units in 'sun.security. No compilation units in 'sun.dc.pr. No compilation units in 'java.nio.charset.spi. No compilation units in 'javax.sound.midi.spi. No compilation units in 'com.sun. No compilation units in 'sun.dc.path. No compilation units in 'com.sun.corba.se.internal. No compilation units in 'javax.transaction. No compilation units in 'com.sun.image.codec.jpeg. No compilation units in 'org.apache.xalan.trace. No compilation units in 'com.sun.corba.se.internal.iiop.messages. No compilation units in 'org.omg.IOP.CodecPackage. No compilation units in 'org.omg.SendingContext. No compilation units in 'com.sun.java.swing.plaf.motif.resources. No compilation units in 'sun.java2d. No compilation units in 'com.sun.corba.se.internal.core. No compilation units in 'sun.rmi.server. No compilation units in 'com.sun.corba. No compilation units in 'com.sun.org.omg.CORBA.portable. No compilation units in 'sun.audio. No compilation units in 'javax.naming.event. No compilation units in 'com.sun.java. No compilation units in 'org.apache.xml.utils.synthetic.reflection. No compilation units in 'sun.awt.geom. No compilation units in 'org.omg.PortableServer.ServantLocatorPackage. No compilation units in 'sun.io. No compilation units in 'sun.net.www.protocol.jar. No compilation units in 'javax.swing.plaf. No compilation units in 'javax.accessibility. No compilation units in '. No compilation units in 'com.sun.accessibility.internal. No compilation units in 'javax.sound.sampled. No compilation units in 'com.sun.image. No compilation units in 'sun.text. No compilation units in 'org.omg.PortableServer.POAManagerPackage. No compilation units in 'java.sql. No compilation units in 'org.apache.xpath.patterns. No compilation units in 'javax.imageio.plugins.jpeg. No compilation units in 'sun.rmi.transport. No compilation units in 'javax.xml.parsers. No compilation units in 'org.ietf.jgss. No compilation units in 'javax.xml.transform.stream. No compilation units in 'org.w3c.dom.stylesheets. No compilation units in 'com.sun.corba.se.internal.ior. No compilation units in 'sun.jdbc.odbc.ee. No compilation units in 'sun.net.www.content.text. No compilation units in 'com.sun.corba.se.internal.orbutil.resources. No compilation units in 'com.sun.security. No compilation units in 'sun.net.www.protocol.doc. No compilation units in 'com.sun.jndi.rmi. No compilation units in 'sun.security.krb5.internal.util. No compilation units in 'com.sun.swing.internal.plaf.metal.resources. No compilation units in 'sun.net.www.content.image. No compilation units in 'org.omg.PortableInterceptor.ORBInitInfoPackage. No compilation units in 'javax.security.auth.kerberos. No compilation units in 'com.sun.accessibility. No compilation units in 'java.awt.print. No compilation units in 'com.sun.naming.internal. No compilation units in 'com.sun.java.browser.dom. No compilation units in 'com.sun.org.omg. No compilation units in 'javax.security.auth.callback. No compilation units in 'java.util.logging. No compilation units in 'org.apache.xml. No compilation units in 'com.sun.jndi.toolkit.dir. No compilation units in 'sun.java2d.pipe. No compilation units in 'java. No compilation units in 'org.omg.PortableInterceptor. No compilation units in 'org.omg.Messaging. No compilation units in 'sun.beans.editors. No compilation units in 'javax.swing.text.html.icons. No compilation units in 'javax.swing.plaf.basic. No compilation units in 'org.apache.xalan.transformer. No compilation units in 'com.sun.swing.internal.plaf.metal. No compilation units in 'org.omg.CORBA_2_3.portable. No compilation units in 'sun.net.www.protocol.netdoc. No compilation units in 'sun.rmi. No compilation units in 'javax.swing.plaf.metal.icons. No compilation units in 'javax.xml.transform. No compilation units in 'sun.awt.dnd. No compilation units in 'com.sun.security.auth.callback. No compilation units in 'javax.imageio.event. No compilation units in 'javax.sound.midi. No compilation units in 'java.awt.im.spi. No compilation units in 'sun.util.logging.resources. No compilation units in 'org.apache.xpath. No compilation units in 'com.sun.imageio.plugins.png. No compilation units in 'META-INF. No compilation units in 'com.sun.media. No compilation units in 'org.apache.crimson.jaxp. No compilation units in 'sun.awt.resources. No compilation units in 'sun.security.util. No compilation units in 'com.sun.java.browser. No compilation units in 'com.sun.java.swing.plaf.motif. No compilation units in 'org.apache.xalan.client. No compilation units in 'org.ietf. No compilation units in 'javax.print.attribute. No compilation units in 'org.xml. No compilation units in 'sun.print.resources. No compilation units in 'sun.rmi.rmid. No compilation units in 'com.sun.media.sound. No compilation units in 'sun.net.www.protocol.systemresource. No compilation units in 'org.omg.CosNaming.NamingContextPackage. No compilation units in 'org.omg.DynamicAny. No compilation units in 'com.sun.corba.se.org.omg. No compilation units in 'sunw.util. No compilation units in 'org.omg.DynamicAny.DynAnyPackage. No compilation units in 'java.security. No compilation units in 'com.sun.org.omg.SendingContext.CodeBasePackage. No compilation units in 'org.xml.sax. No compilation units in 'javax.imageio. No compilation units in 'com.sun.java.swing.plaf.motif.icons. No compilation units in 'com.sun.corba.se.internal.corba. No compilation units in 'javax.imageio.stream. No compilation units in 'javax.swing.text.html.parser. No compilation units in 'org.apache. No compilation units in 'java.io. No compilation units in 'javax.rmi. No compilation units in 'com.sun.corba.se.internal.javax.rmi.CORBA. No compilation units in 'org.apache.crimson.tree. No compilation units in 'sun.security.acl. No compilation units in 'com.sun.naming. No compilation units in 'java.lang. No compilation units in 'java.net. No compilation units in 'sun.awt.print. No compilation units in 'com.sun.jndi.toolkit. No compilation units in 'com.sun.jndi.rmi.registry. No compilation units in 'java.nio.charset. No compilation units in 'java.rmi. No compilation units in 'sun.util. No compilation units in 'org.apache.xpath.res. No compilation units in 'javax.print.attribute.standard. No compilation units in 'sun.security.x509. No compilation units in 'sun.security.krb5.internal.ccache. No compilation units in 'org.apache.xalan.xslt. No compilation units in 'java.awt. No compilation units in 'com.sun.image.codec. No compilation units in 'sun.java2d.loops. No compilation units in 'javax. No compilation units in 'com.sun.imageio.plugins.common. No compilation units in 'javax.swing.event. No compilation units in 'org.apache.xml.utils. No compilation units in 'org.xml.sax.ext. No compilation units in 'com.sun.java.swing. No compilation units in 'com.sun.org.omg.CORBA.ValueDefPackage. No compilation units in 'java.security.interfaces. No compilation units in 'com.sun.accessibility.internal.resources. No compilation units in 'sun.rmi.registry.resources. No compilation units in 'com.sun.swing.internal.plaf.basic.resources. No compilation units in 'sun.misc. No compilation units in 'org.omg.PortableServer.portable. No compilation units in 'sun.net. No compilation units in 'com.sun.corba.se.internal.Interceptors. No compilation units in 'sun.nio.cs. No compilation units in 'com.sun.imageio. No compilation units in 'com.sun.java.browser.net. No compilation units in 'sun.jdbc. No compilation units in 'sun.awt. No compilation units in 'com.sun.security.jgss. No compilation units in 'com. No compilation units in 'java.rmi.registry. No compilation units in 'org.omg.DynamicAny.DynAnyFactoryPackage. No compilation units in 'java.security.spec. No compilation units in 'javax.swing.text.rtf.charsets. No compilation units in 'org.omg.CORBA.portable. No compilation units in 'com.sun.corba.se. No compilation units in 'org.w3c.dom.traversal. No compilation units in 'sun.awt.image. No compilation units in 'javax.print.event. No compilation units in 'com.sun.java.swing.plaf.windows.icons. No compilation units in 'org.omg.PortableServer. No compilation units in 'com.sun.corba.se.internal.javax.rmi. No compilation units in 'javax.sound.sampled.spi. No compilation units in 'com.sun.jndi.cosnaming. No compilation units in 'org.w3c.dom.css. No compilation units in 'java.awt.dnd.peer. No compilation units in 'javax.swing. No compilation units in 'java.awt.font. No compilation units in 'com.sun.corba.se.ActivationIDL.InitialNameServicePackage. No compilation units in 'org.w3c.dom.html. No compilation units in 'java.beans. No compilation units in 'com.sun.rmi. No compilation units in 'org.apache.xml.dtm.ref.dom2dtm. No compilation units in 'sun.security.pkcs. No compilation units in 'com.sun.corba.se.internal.util. No compilation units in 'java.awt.image.renderable. No compilation units in 'com.sun.imageio.spi. No compilation units in 'sun.net.spi.nameservice. No compilation units in 'com.sun.jndi.url. No compilation units in 'sun.net.www.content. No compilation units in 'com.sun.imageio.plugins.jpeg. No compilation units in 'com.sun.corba.se.internal.Activation. No compilation units in 'META-INF.services. No compilation units in 'javax.swing.tree. No compilation units in 'sun.security.jgss.spi. No compilation units in 'com.sun.jndi.url.dns. No compilation units in 'sun.applet.resources. No compilation units in 'com.sun.corba.se.connection. No compilation units in 'org.apache.xpath.objects. No compilation units in 'sun.nio. No compilation units in 'java.awt.image. No compilation units in 'sun.net.www.protocol.file. No compilation units in 'org.apache.xalan.lib.sql. No compilation units in 'sun.net.ftp. No compilation units in 'org.w3c.dom. No compilation units in 'javax.xml. No compilation units in 'sun.awt.font. No compilation units in 'sun.text.resources. No compilation units in 'org.omg. No compilation units in 'javax.swing.filechooser. No compilation units in 'javax.swing.text.rtf. No compilation units in 'sun.net.www.protocol.verbatim. No compilation units in 'sun.net.www.protocol.ftp. No compilation units in 'com.sun.org.omg.SendingContext. No compilation units in 'com.sun.java.swing.plaf.windows.resources. No compilation units in 'com.sun.corba.se.internal.CosNaming. No compilation units in 'sun.net.smtp. No compilation units in 'sun.util.logging. No compilation units in 'java.rmi.activation. No compilation units in 'java.text. No compilation units in 'sun.rmi.runtime. No compilation units in 'org.w3c.dom.events. No compilation units in 'javax.naming.spi. No compilation units in 'java.lang.ref. No compilation units in 'sun.tools.jar. No compilation units in 'javax.imageio.spi. No compilation units in 'com.sun.corba.se.org. No compilation units in 'com.sun.corba.se.internal.iiop. No compilation units in 'org.apache.crimson.parser.resources. No compilation units in 'sun.rmi.log. No compilation units in 'org.apache.crimson. No compilation units in 'com.sun.jndi.toolkit.ctx. No compilation units in 'sun.security.krb5.internal. No compilation units in 'org.apache.xpath.axes. No compilation units in 'java.awt.color. No compilation units in 'sun.jdbc.odbc. No compilation units in 'java.security.acl. No compilation units in 'java.rmi.dgc. No compilation units in 'com.sun.swing.internal.plaf. No compilation units in 'com.sun.jndi.url.rmi. No compilation units in 'sun.util.calendar. No compilation units in 'java.security.cert. No compilation units in 'org.xml.sax.helpers. No compilation units in 'sun.tools.jar.resources. No compilation units in 'javax.security.auth. No compilation units in 'java.rmi.server. No compilation units in 'org.apache.xalan.extensions. No compilation units in 'sun.security.jgss.krb5. No compilation units in 'sun.security.krb5.internal.tools. No compilation units in 'javax.security.auth.login. No compilation units in 'sun.security.krb5.internal.ktab. No compilation units in 'java.util. No compilation units in 'sun.security.krb5. No compilation units in 'org.apache.xalan.templates. No compilation units in 'com.sun.swing. No compilation units in 'org.omg.CORBA.ORBPackage. No compilation units in 'javax.swing.text. No compilation units in 'com.sun.corba.se.internal.javax. No compilation units in 'org.w3c.dom.views. No compilation units in 'org.omg.CORBA.TypeCodePackage. No compilation units in 'sun.awt.image.codec. No compilation units in 'sun.net.www.http. No compilation units in 'javax.xml.transform.dom. No compilation units in 'javax.naming.ldap. No compilation units in 'sun.nio.ch. No compilation units in 'com.sun.security.auth.login. No compilation units in 'com.sun.jndi.url.iiop. No compilation units in 'java.nio. No compilation units in 'sun.tools.util. No compilation units in 'org.apache.xml.dtm.ref. No compilation units in 'org.apache.xpath.functions. No compilation units in 'org.omg.PortableServer.POAPackage. No compilation units in 'sun.security.krb5.internal.crypto. No compilation units in 'javax.print. No compilation units in 'java.nio.channels.spi. No compilation units in 'com.sun.org.omg.CORBA. No compilation units in 'com.sun.imageio.plugins.gif. No compilation units in 'sun.beans.infos. No compilation units in 'javax.security.auth.spi. No compilation units in 'org.omg.Dynamic. No compilation units in 'com.sun.jndi.url.corbaname. No compilation units in 'com.sun.jndi.url.ldap. No compilation units in 'sun.rmi.rmid.resources. No compilation units in 'java.awt.event. No compilation units in 'java.awt.dnd. No compilation units in 'sun.net.www. No compilation units in 'java.awt.im. No compilation units in 'sun.security.provider.certpath. No compilation units in 'javax.sound. No compilation units in 'sun.reflect. No compilation units in 'javax.security. No compilation units in 'java.math. No compilation units in 'sun.security.action. No compilation units in 'com.sun.corba.se.internal.io. No compilation units in 'sun.rmi.transport.proxy. No compilation units in 'sun.awt.color. No compilation units in 'javax.swing.table. No compilation units in 'sun.rmi.registry. No compilation units in 'javax.sql. No compilation units in 'javax.imageio.metadata. No compilation units in 'java.util.zip. No compilation units in 'org.apache.xalan.lib. No compilation units in 'java.util.jar. No compilation units in 'org.apache.crimson.parser. No compilation units in 'org.omg.PortableServer.CurrentPackage. No compilation units in 'org.omg.stub.java. No compilation units in 'org.apache.xml.dtm.ref.sax2dtm. No compilation units in 'sun.net.dns. No compilation units in 'java.util.regex. No compilation units in 'com.sun.rmi.rmid. No compilation units in 'org.omg.stub. No compilation units in 'com.sun.jndi. No compilation units in 'sun.awt.shell. No compilation units in 'javax.xml.transform.sax. No compilation units in 'com.sun.corba.se.internal.POA. No compilation units in 'sun.awt.windows. No compilation units in 'javax.swing.plaf.metal.sounds. No compilation units in 'sun.net.www.content.audio. No compilation units in 'com.sun.jndi.toolkit.corba. No compilation units in 'sunw. No compilation units in 'sun.net.www.protocol. No compilation units in 'com. No compilation units in 'META-INF. No compilation units in 'com.sun. No compilation units in 'com.sun.rsasign. No compilation units in 'com.sun.rsajca. No compilation units in '. No compilation units in 'javax.security.cert. No compilation units in 'COM.rsa.Intel. No compilation units in 'com.sun.net.ssl.internal. No compilation units in 'COM.rsa. No compilation units in 'com.sun.security.cert. No compilation units in 'sun.net. No compilation units in 'com.sun. No compilation units in 'com.sun.net. No compilation units in 'com.sun.net.ssl.internal.www. No compilation units in 'com.sun.net.ssl.internal.www.protocol.https. No compilation units in 'com. No compilation units in 'META-INF. No compilation units in 'com.sun.security.cert.internal. No compilation units in 'COM.rsa.asn1. No compilation units in 'com.sun.security.cert.internal.x509. No compilation units in 'sun.net.www. No compilation units in 'javax. No compilation units in 'COM.rsa.jsafe. No compilation units in 'com.sun.net.ssl. No compilation units in 'COM. No compilation units in 'sun. No compilation units in 'javax.net. No compilation units in 'com.sun.security. No compilation units in 'com.sun.net.ssl.internal.ssl. No compilation units in 'javax.security. No compilation units in 'com.sun.net.ssl.internal.www.protocol. No compilation units in 'sun.net.www.protocol.https. No compilation units in 'javax.net.ssl. No compilation units in '. No compilation units in 'sun.net.www.protocol. No compilation units in 'javax.crypto.interfaces. No compilation units in 'META-INF. No compilation units in 'javax.crypto.spec. No compilation units in 'javax.crypto. No compilation units in 'javax. No compilation units in '. No compilation units in 'META-INF. No compilation units in 'META-INF.services. No compilation units in 'sun. No compilation units in 'sun.io. No compilation units in 'sun.nio.cs. No compilation units in 'sun.nio. No compilation units in 'sun.nio.cs.ext. No compilation units in '. No compilation units in 'sun.net.spi.nameservice.dns. No compilation units in 'sun.net. No compilation units in 'META-INF. No compilation units in 'META-INF.services. No compilation units in 'sun. No compilation units in 'sun.net.spi.nameservice. No compilation units in 'sun.net.spi. No compilation units in '. No compilation units in 'com.sun.jndi. No compilation units in 'com.sun.security.sasl. No compilation units in 'com.sun.security.sasl.preview. No compilation units in 'com. No compilation units in 'com.sun.jndi.ldap.ext. No compilation units in 'META-INF. No compilation units in 'com.sun. No compilation units in 'META-INF.services. No compilation units in 'com.sun.security.sasl.util. No compilation units in 'com.sun.security.sasl.digest. No compilation units in 'com.sun.security. No compilation units in 'com.sun.security.sasl.gsskerb. No compilation units in 'com.sun.jndi.ldap.sasl. No compilation units in 'com.sun.jndi.ldap. No compilation units in '. No compilation units in 'sun.text. No compilation units in 'META-INF. No compilation units in 'sun. No compilation units in 'sun.text.resources. No compilation units in '. No compilation units in 'com. No compilation units in 'META-INF. No compilation units in 'com.sun. No compilation units in 'com.sun.crypto. No compilation units in 'com.sun.crypto.provider. No compilation units in '. I don't have a ClassCastException.
I used the auto-generated 'Hello, World' plug-in project.
Using the auto-generated Hello World plugin, I get: Initialized. Found HelloWorld No compilation units in '. Found HelloWorldPlugin.java in HelloWorld Key = java.lang/Object Key = java.lang/Object Found SampleAction.java in HelloWorld.actions ..... It looks good. I will try to build a test case.
Your problem seems to be a problem when you have a local type (a type defined inside a method) as a parameter type of a method. I don't see how this is doable. Are you iterating inside method bodies?
What I don't see is how you can get a binary type that is local. A local type is visible only in its defining method. If you have a workspace that produces the error, please attach it to the bug report if it is not too big.
The code that I wrote to demonstrate the bug tries to find java.lang.String, which has a private inner class CaseInsensitiveComparator. It then tries to call getKey() on the parameters of the methods (or constructors) of the inner class. One part of the problem is that the Java compiler seems to convert this private inner class into what looks like an anonymous class (java.lang.String$1 in my debugger). The second part is that even though there are no methods that refer to CaseInsensitiveComparator in the source for java.lang.String, there seems to be a constructor that refers to it. This is what I get out of the debugger: void <init>(java.lang.String$1)
I still cannot reproduce it. Now I get: Initialized. Found P Found C.java in private static class java.lang.String$CaseInsensitiveComparator extends java.lang.Object implements : Unresolved type java.util.Comparator, Unresolved type java.io.Serializable enclosing type : java.lang.String /* fields */ long serialVersionUID /* methods */ void <init>() int compare(java.lang.Object, java.lang.Object) Key = java.lang/Object Key = java.lang/Object I found a bug in the test case. The computeKey was called using 'i' as the index and not 'k'. I understand what you are trying to do. But I cannot reproduce. You should not be able to get a local class inside the getKey() method. I will try to reproduce such a case. Do you get it again using latest integration build?
I downloaded I20040121, and my test code doesn't get the exception anymore (also fixing the bug). However, when I run our system using the same setup, I still get the exception, so I'll have to investigate it more.
I think this is why I cannot reproduce this issue. If you could provide a test case even if it is not simple, I will investigate.
Incrementing milestone as no testcase is available.
Created attachment 7664 [details] 2nd try at a project to demo the bug
Created attachment 7665 [details] Project to put in the run-time workspace
The two new attachments should demo the bug in the latest integration build (I20040129).
Reproduced. I am investigating.
The bug comes from the fact that an anonymous class is returned as a member class. The cast is fine. An anonymous type should never reach that line. I am investigating the problem. Thanks for the reproducable test case. It helped a lot.
Would you have any idea where I can get the source of the mail.jar that you are using? Do you know what version it is? It seems that the compiler used to compile it didn't respect the JVM specs and this leads to wrong members for the enclosing class javax.mail.Folder. I would need the source to confirm that this is a problem with the javax/mail/Folder.class file itself.
We got that jar file as part of jakarta-log4j-1.2.8. According to the manifest file for that jar, it looks like it's pretty old: Manifest-Version: 1.0 SCCS-ID: @(#)javamail.mf 1.4 00/09/26 Extension-Name: javax.mail Specification-Title: JavaMail(TM) API Design Specification Specification-Version: 1.2 Specification-Vendor: Sun Microsystems, Inc. Implementation-Version: 1.2 Implementation-Vendor: Sun Microsystems, Inc. Implementation-Vendor-Id: com.sun
I can confirm that the .class file doesn't follow the JVM specs. Inside the javax.mail.Folder there is an anonymous class defined in the terminateQueue() method. The inner class attribute for this anynomous class is invalid. I get this: inner class info name: #16 javax/mail/Folder$1 outer class info name: #15 javax/mail/Folder inner name: #145 accessflags: 18 private final Because this is an anonymous class, the inner name index should be 0 instead of 145 and the outer class info name index should also be 0 instead of 15. The only thing I can do to remove this class from the member types is to test the length of the inner name. It must not be zero for a member class. In this case, we have 0. The concern I have is that I add an extra-check to handle an invalid case. However it would not be possible to filter out a local class.
I will release this extra check. It will fix this issue. Fixed and released in HEAD. Do you want a patch to test it or is is fine for you to wait for an integration build? We won't submit code for tomorrow's integration build, so this would be fixed in the 24th of February integration build.
JavaMail 1.3.1 seems to have the same bug. I requested the source to double check it.
We can wait for an integration build.
Cannot verify until bug 55901 is fixed.
Verified in I200403250010.