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