我想在远程服务器上执行一个类文件(.class),并通过网络传输。由于服务器端不存在该类,而我又需要动态添加新的类,因此无法使用序列化。我不想使用RMI。
在桌面Java中,可以通过以下步骤轻松实现:
- 使用
在Android中,我通过这个hack成功地加载了一个类实例,但是
我尝试过Apache BCEL,但它不起作用。以下代码会抛出
有没有办法将Android上的Dalvik字节码转换为常规的类字节码,以便我可以从中重建一个.class文件并在网络上传输?谢谢。
在桌面Java中,可以通过以下步骤轻松实现:
- 使用
Class<?> clazz = Class.forName("mypackage.MyClass")
加载类。
- 使用URL url = clazz.getResource("MyClass.class")
获取文件(或jar容器)的访问路径。在Android中,我通过这个hack成功地加载了一个类实例,但是
clazz.getResource()
总是返回null。(这是合理的,因为Dalvik存储格式不同)我尝试过Apache BCEL,但它不起作用。以下代码会抛出
ClassNotFoundException
异常: JavaClass clazz = Repository .lookupClass("mypackage.mMyClass");
byte[] b = clazz.getBytes();
有没有办法将Android上的Dalvik字节码转换为常规的类字节码,以便我可以从中重建一个.class文件并在网络上传输?谢谢。