打字猴:1.70043969e+09
1700439690
1700439691 JavaCompiler cmp=ToolProvider.getSystemJavaCompiler();
1700439692
1700439693 //Java标准文件管理器
1700439694
1700439695 StandardJavaFileManager fm=cmp.getStandardFileManager(null, null, null);
1700439696
1700439697 //Java文件对象
1700439698
1700439699 JavaFileObject jfo=new StringJavaObject(clsName, sourceStr);
1700439700
1700439701 //编译参数,类似于javac<options>中的options
1700439702
1700439703 List<String>optionsList=new ArrayList<String>();
1700439704
1700439705 //编译文件的存放地方,注意:此处是为Eclipse工具特设的
1700439706
1700439707 optionsList.addAll(Arrays.asList(”-d”,”./bin”));
1700439708
1700439709 //要编译的单元
1700439710
1700439711 List<JavaFileObject>jfos=Arrays.asList(jfo);
1700439712
1700439713 //设置编译环境
1700439714
1700439715 JavaCompiler.CompilationTask task=cmp.getTask(null, fm, null,
1700439716
1700439717 optionsList, null, jfos);
1700439718
1700439719 //编译成功
1700439720
1700439721 if(task.call()){
1700439722
1700439723 //生成对象
1700439724
1700439725 Object obj=Class.forName(clsName).newInstance();
1700439726
1700439727 Class<?extends Object>cls=obj.getClass();
1700439728
1700439729 //调用sayHello方法
1700439730
1700439731 Method m=cls.getMethod(methodName, String.class);
1700439732
1700439733 String str=(String)m.invoke(obj,“Dynamic Compilation”);
1700439734
1700439735 System.out.println(str);
1700439736
1700439737 }
1700439738
1700439739 }
[ 上一页 ]  [ :1.70043969e+09 ]  [ 下一页 ]