<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    臨時文件動態編譯java代碼

    本程序出自群里.22069957 之前用到這個功能在網頁上動態生成用戶寫的代碼..共享給大家.


    import java.io.File;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.net.URLClassLoader;
    import java.util.Arrays;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
    import javax.tools.DiagnosticCollector;
    import javax.tools.JavaCompiler;
    import javax.tools.StandardJavaFileManager;
    import javax.tools.ToolProvider;

    public class demo {
        
    public demo(String s) {
            
    try {

                System.getProperties().store(System.out, 
    "");

                JavaCompiler compiler 
    = ToolProvider.getSystemJavaCompiler();
                DiagnosticCollector diagnostics 
    = new DiagnosticCollector();
                StandardJavaFileManager fileManager 
    = compiler
                        .getStandardFileManager(diagnostics, 
    nullnull);
                String fileName 
    = "MyButton.java";

                File file 
    = new File(System.getProperty("java.io.tmpdir"), fileName);
                PrintWriter pw 
    = new PrintWriter(file);
                pw.println(s);
                pw.close();

                Iterable compilationUnits 
    = fileManager
                        .getJavaFileObjectsFromStrings(Arrays.asList(file
                                .getAbsolutePath()));
                JavaCompiler.CompilationTask task 
    = compiler.getTask(null,
                        fileManager, diagnostics, 
    nullnull, compilationUnits);
                
    boolean success = task.call();
                fileManager.close();
                System.out.println((success) 
    ? "編譯成功" : "編譯失敗");
                URLClassLoader classLoader 
    = new URLClassLoader(
                        
    new URL[] new File(System.getProperty("java.io.tmpdir"))
                                .toURI().toURL() }
    );
                
    final JButton btn = (JButton) classLoader.loadClass("MyButton")
                        .newInstance();
                btn.setText(
    "按鈕");
                System.out.println(btn);
                SwingUtilities.invokeLater(
    new Runnable() {
                    @Override
                    
    public void run() {
                        JFrame frame 
    = new JFrame("frame");
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        frame.setSize(
    640480);
                        frame.setLocationRelativeTo(
    null);
                        frame.getContentPane().add(btn);
                        frame.setVisible(
    true);
                    }

                }
    );
            }
     catch (Exception e) {
                e.printStackTrace();
            }

        }


        
    public static void main(String args[]) {
            
    new demo(
                    
    "import javax.swing.JButton; public class MyButton extends JButton {}");
        }

    }

    posted on 2010-02-04 23:49 相信 閱讀(605) 評論(0)  編輯  收藏 所屬分類: Swing文章

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    不顯示applet

    常用鏈接

    留言簿(16)

    我參與的團隊

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    swingchina 專業搞Swing的網站

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日日操夜夜操免费视频| 7723日本高清完整版免费| 国产无遮挡吃胸膜奶免费看| 亚洲专区中文字幕| 野花高清在线观看免费完整版中文 | 日韩人妻无码精品久久免费一| 亚洲精品成人久久久| 黄色免费网站在线看| 亚洲av无码不卡私人影院| 日本黄页网址在线看免费不卡 | 久久久久av无码免费网| 亚洲电影免费观看| 久久久久久99av无码免费网站 | 精品少妇人妻AV免费久久洗澡| 亚洲一区动漫卡通在线播放| 免费精品国产自产拍在 | 亚洲色大成网站WWW久久九九| 午夜成人无码福利免费视频| 亚洲中文字幕在线第六区| 黄页免费在线观看| 亚洲成人午夜电影| 成人永久免费福利视频网站| 香蕉视频在线观看免费| 国产aⅴ无码专区亚洲av| 日本视频一区在线观看免费| 国产亚洲中文日本不卡二区| 免费播放春色aⅴ视频| 中国在线观看免费的www| 亚洲高清免费在线观看| 女人张开腿给人桶免费视频| 国产黄在线观看免费观看不卡| 亚洲Av熟妇高潮30p| 精品久久久久久久免费加勒比| 一级毛片成人免费看a| 亚洲人成在线电影| 午夜私人影院免费体验区| 国产精品成人免费观看| 久久精品国产亚洲av高清漫画 | 国产精品区免费视频| 亚洲无吗在线视频| 亚洲一级特黄大片在线观看|