这是我想要实现的目标:
我正在构建一个需要支持插件的Android应用程序。我需要做的是从Web服务器下载.java文件,然后在我的应用程序中在运行时编译它们,然后将它加载到类路径中。我想使用Java因为易于使用,因为我可以使用插件对象,就像我的库存对象一样。
我见过javax.tools的编译方式,但在DalvikVM上没有。什么是最好的替代品(以类似的方式工作)?
编辑:
我现在正在使用.bsh-script。这就像JVM上的魅力,而应在Android设备上工作(我将在下面测试):
package de.hotware.beanshell.test;
import bsh.EvalError;
import bsh.Interpreter;
public class BeanShellTest {
public static interface InterfaceTest {
public void sayHello();
}
public static void main(String[] args) {
try {
Interpreter interpreter = new Interpreter();
InterfaceTest res = (InterfaceTest) interpreter.eval("import de.hotware.beanshell.test.BeanShellTest.InterfaceTest;" +
"new InterfaceTest() {" +
"public void sayHello() { System.out.println(\"hello\");}" +
"}");
res.sayHello();
} catch(EvalError e) {
e.printStackTrace();
}
}
public void test() {
}
}
答案 0 :(得分:3)
你需要做两件事:
javac
或等效文件将其编译为.class文件。dx
程序,这是可行的,但它可能有点内存需求,特别是对于较大的程序。完成后,您可以使用DexClassLoader
加载DEX文件中的代码。
考虑到所有事情,我认为你最好使用BeanShell。