相关疑难解决方法(0)

如何在android/dalvik上动态加载Java类?

我想知道是否以及如何在dalvik中动态加载dex或类文件,我写的一些quick'n'dirty测试函数是这样的:

    public void testLoader() { 
            InputStream in; 
            int len; 
            byte[] data = new byte[2048]; 
            try { 
                    in = context.getAssets().open("f.dex"); 
                    len = in.read(data); 
                    in.close(); 
                    DexFile d; 
                    Class c = defineClass("net.webvm.FooImpl", data, 0, len); 
                    Foo foo = (Foo)c.newInstance(); 
            } catch (IOException e1) { 
                    // TODO Auto-generated catch block 
                    e1.printStackTrace(); 
            } catch (IllegalAccessException e) { 
                    // TODO Auto-generated catch block 
                    e.printStackTrace(); 
            } catch (InstantiationException e) { 
                    // TODO Auto-generated catch block 
                    e.printStackTrace(); 
            } 
    } 
Run Code Online (Sandbox Code Playgroud)

而Foo界面就是这样

    public interface Foo { 
            int get42(); 
    } 
Run Code Online (Sandbox Code Playgroud)

和f.dex包含该接口的一些dx'ed实现: …

java android classloader dalvik

32
推荐指数
1
解决办法
4万
查看次数

在运行时加载Java-Byte-Code

我得到了一些在我的程序中生成的java-byte-code(如此编译的java-source).现在我想将这个字节码加载到当前运行的Java-VM中并运行一个特定的函数.我不知道如何实现这一点,我在Java类加载器中挖掘了一点,但没有找到直接的方法.

我找到了一个解决方案,它在硬盘上采用了一个类文件,但是我得到的字节码是在字节数组中,我不想把它写到磁盘上而是直接使用它.

谢谢!

java bytecode classloader

8
推荐指数
1
解决办法
7196
查看次数

标签 统计

classloader ×2

java ×2

android ×1

bytecode ×1

dalvik ×1