【记录】在android中编译并调用编译好的java代码

【背景】

希望实现:

在android环境中,如何去动态的,对于输入的一个java文件,

实时地去编译该java文件,(生成对应的class)

以及在android代码中,引用此编译后的java的class,实现调用其中的函数,引用其中的变量。

 

先去在NeatBeans中弄了个测试的java代码:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package demo_eddl_method_code;

/**
 *
 * @author CLi
 */
public class Demo_eddl_method_code {
    
    public static int getSum(int x, int y)
    {
        int sum = 0;
        sum = x + y;
        return sum;
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int x = 1;
        int y = 2;
        int gotSum = getSum(x, y);
        System.out.println(gotSum);
    }

}

希望可以在android代码中,将上述的代码,动态的编译,然后且在android代码中,可以调用到对应的函数getSum。

 

【折腾过程】

1.貌似从:

how to compile java code in android [duplicate]

找到的:

Convert String to code

好像是所要的。

但是其是用的java6中的库:

javax.tools Interface JavaCompiler

此处,不知道android中是否存在和是否能够正常使用。

2.后来折腾代码,结果期间出错:

【未解决】android中代码运行出错:I/dalvikvm(1565): Could not find method javax.tools.ToolProvider.getSystemJavaCompiler

3.参考:

How can I compile and deploy a java class at runtime?

找到:

http://code.google.com/p/compilation-toolbox/

看其介绍,其也还是利用了javax.tools的。所以,估计还是不行。

不过,也去试试是否可用:

【记录】折腾Android(java)的动态编译工具:compilation-toolbox

结果也还是不行。

 

4.继续参考:

How can I compile and deploy a java class at runtime?

先去试试BCEL

【记录】折腾用BECL去实现android中动态编译并调用java代码

 

5.再参考:

Compile to java bytecode (without using Java)

去看看:

Trove

http://teatrove.sourceforge.net/trove.html

 

6.



One Thought on “【记录】在android中编译并调用编译好的java代码

  1. 不知楼主这个问题解决没有。
    我现在也需要在android里动态编译生成java类。
    还有网站挺漂亮的 。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量