用java語言編譯內存中java小程序,並將生成的.class文件保存在一個文件夾下。

public class DynamicCompile {  
      
    private final static String PATH = ****;//根據實際情況填寫路徑  
      
    public static boolean compile(String id, String file_name, String file_content) throws IOException, ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException{  
          
        /* 
         * 編譯內存中的java代碼 
         * */  
	//1.創建保存的文件夾  
    int index = file_name.lastIndexOf(".java");  
    file_name = file_name.substring(0, index);  
      
    String class_path = PATH + id;  
    File file = new File(class_path);  
    if(!file.exists() && !file.isDirectory()) {  
        file.mkdir();  
    }  
      
    // 2.開始編譯(<span style="font-family: Arial, Helvetica, sans-serif;">file_content就是內存中的java程序</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span>  
    JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();  
    JavaFileObject fileObject = new CharSequenceJavaFileObject(file_name, file_content);  
    CompilationTask task = javaCompiler.getTask(null, null, null, Arrays.asList("-g", "-d", class_path), null, Arrays.asList(fileObject));  
    boolean result = task.call();  
      
    return result;  
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章