It turns out that VMClassloader defineClass() methods do nothing, but throw the class format error. So how is one supposed to load class bytes directly from a byte array? Hmmm.
On May 10, 10:50 pm, Tomasz <[email protected]> wrote: > Hi friends, > > I have an application which dynamically creates classes at runtime (in > the dex format). Is it possible to load these dex bytes directly > without saving them to a dex file, and then zipping it (many such > classes are created). An equivalent of > ClassLoader.defineClass(className, classDexBytes, 0, > classDexBytes.length) is what I'd like. I.e. a DexClassLoader that > doesn't have to reference a physical file, but can be passed byte > arrays instead. > > If I try just extending ClassLoader is get a > java.lang.UnsupportedOperationException: can't load this type of class > file > despite the byte[] definitely being in dex format (it starts with 'd' > 'e' 'x' bytes). The trace for this is: > W/System.err( 362): java.lang.UnsupportedOperationException: can't > load this type of class file > W/System.err( 362): at java.lang.VMClassLoader.defineClass(Native > Method) > W/System.err( 362): at > java.lang.ClassLoader.defineClass(ClassLoader.java:338) > W/System.err( 362): at > java.lang.ClassLoader.defineClass(ClassLoader.java:301) > > Thank you very much for your help, > Tomasz -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

