【背景】
折腾:
过程中,用代码:
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