【背景】
折腾:
过程中,用代码:
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Comparator;
import javax.tools.*;
...
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_ddparser);
		
		//antlrV3Demo();
		//hartEddlParserDemo_NonDebug();
		//hartEddlParserDemo_Debug();
		
		testCompileJavaCode();
	}
    public void testCompileJavaCode()
    {
        File javaSourceCode = new File("/mnt/sdcard/Demo_eddl_method_code.java");
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); // this line error: dalvikvm  VFY  unable to resolve static method 
        Writer out = new PrintWriter(System.out);  
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
        DiagnosticListener<? super JavaFileObject> diagnosticListener = null;
        Iterable<String> options = null;
        Iterable<String> classes = null;
       
        Iterable<? extends JavaFileObject> compilationUnits1 =
           fileManager.getJavaFileObjects(javaSourceCode);
       
        compiler.getTask(out, fileManager, diagnosticListener, options, classes, compilationUnits1).call();
        
        System.out.println("Got compiled output:" + out.toString());
        try {
            fileManager.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return;
    }结果运行出错:
05-07 15:51:25.059: I/dalvikvm(1565): Could not find method javax.tools.ToolProvider.getSystemJavaCompiler, referenced from method com.mm.antlrv3demo.DDParser.testCompileJavaCode 05-07 15:51:25.059: D/dalvikvm(1565): VFY: replacing opcode 0x71 at 0x0008 05-07 15:52:21.278: D/AndroidRuntime(1565): Shutting down VM 05-07 15:52:21.278: W/dalvikvm(1565): threadid=1: thread exiting with uncaught exception (group=0xb4f98288)  | 
【解决过程】
1.看起来是没有找到对应的
javax.tools.ToolProvider
应该是,android本身的环境中,就没有此Java6中的库。
其中,之前折腾android环境中,添加对应的
import javax.tools.*;
的时候,都是要添加对应的JRE环境,才能编译过去的。
但是却在运行的时候,由于是在android环境中,看来是没有此库的支持,所以无法正常运行。
2.参考了:
感觉也是android中无此库,所以出错。
【总结】
目前看来,貌似没办法,能把原先Java6中的javax.tools的库,能弄到Android中,否则看来是无法正常利用
javax.tools.ToolProvider.getSystemJavaCompiler
的。
转载请注明:在路上 » 【未解决】android中代码运行出错:I/dalvikvm(1565): Could not find method javax.tools.ToolProvider.getSystemJavaCompiler