java 调用API 编译生成class文件,并加载产生对象

来源:互联网 发布:学校装网络信号屏蔽器 编辑:程序博客网 时间:2024/06/07 02:39
  比如我src下面有个Student.java文件,通过下面代码可编译成class文件,通过URLClassLoader 得到 Student对象  try {                //类文件路径(默认生成的class文件和java源文件在同一个目录)        String classpath=System.getProperty("user.dir")+"/src/Student.java";                //需要编译的java文件的集合(可同时编译多个java文件)File[] files1={new File(classpath)};                //获得系统的java编译器        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();                //获得文件管理器        StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);//文件迭代器                Iterable compilationUnits1 =fileManager.getJavaFileObjectsFromFiles( Arrays.asList(files1));                //编译文件 (call方法表示调用编译)        compiler.getTask(null, fileManager, null, null, null, compilationUnits1).call();                //关闭文件管理器。        fileManager.close();} catch (IOException e) {e.printStackTrace();}             //加载类到内存,并产生实例try {              //class类存放的目录     String classdir="file:/"+System.getProperty("user.dir")+"/src";     //类路径集合             URL[] urls={new URL(classdir)};             //加载class类     URLClassLoader load=new URLClassLoader(urls);             //加载Student类     Class clazz=load.loadClass("Student");             Sudent stu=(Sudent)clazz.newInstance();     //对象拿到了,后面就随你怎么做了。   } catch (Exception e) {e.printStackTrace();           }


原创粉丝点击