Bob*_*obs 8 java android eval execution
我想从用户那里获得一行Java代码并在Android中执行它.例如:
String strExecutable = " int var; var = 4 + 3"
Object obj = aLibrary.eval(strExecutable);
Run Code Online (Sandbox Code Playgroud)
它不是java脚本,我想运行java代码.
可能吗?如果有,怎么样?
我研究过像这样的链接.但他们是关于JVM而不是Android Dalvik的问题.
小智 6
你可以试试BeanShell!它非常简单,也适用于 android。只需使用 jar 库构建您的应用程序。
import bsh.Interpreter;
private void runString(String code){
Interpreter interpreter = new Interpreter();
try {
interpreter.set("context", this);//set any variable, you can refer to it directly from string
interpreter.eval(code);//execute code
}
catch (Exception e){//handle exception
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
不过要小心!在生产应用程序中使用此功能可能存在安全风险,尤其是当您的应用程序与用户数据/文件进行交互时。
你可以尝试这样的事情:
// Code Execute, Khaled A Khunaifer, 27 March 2013
class CodeExcute
{
public static void execute (String[] commands, String[] headers)
{
// build commands into new java file
try
{
FileWriter fstream = new FileWriter("Example.java");
BufferedWriter out = new BufferedWriter(fstream);
out.write("");
for (String header : headers) out.append(header);
out.append("class Example { public static void main(String args[]) { ");
for (String cmd : commands) out.append(cmd);
out.append(" } }");
out.close();
}
catch (Exception e)
{
System.err.println("Error: " + e.getMessage());
}
// set path, compile, & run
try
{
Process tr = Runtime.getRuntime().exec(
new String[]{ "java -cp .",
"javac Example.java",
"java Example" } );
}
catch (Exception e)
{
System.err.println("Error: " + e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3611 次 |
| 最近记录: |