• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::

            編譯Java程序:

            import java.io.FileNotFoundException;

            import java.io.PrintWriter;


            import com.sun.tools.javac.Main;


            public class Test {

                public static void main(String[] argv) throws FileNotFoundException {

                    PrintWriter writer = new PrintWriter("result.txt");

                    String[] options = { "/Users/Biao/Desktop/FilteredJList.java" };

                    Main.compile(options, writer);

                }

            }

            執(zhí)行Java程序:

            // Process proc = Runtime.getRuntime().exec(String.format("java %s", "FilteredJList"));

                private void run(String directory, String className, String[] args) {

                    try {

                        File classLoaderDirectory = new File(directory);

                        URL url = classLoaderDirectory.toURL();

                        URL[] urls = new URL[] { url };

                        ClassLoader loader = new URLClassLoader(urls);


                        Class clazz = loader.loadClass(className);


                        Method mainMethod = clazz.getMethod("main", String[].class);

                        // mainMethod.invoke(null, new Object[] { new String[] { /* args */}

                        // });

                        mainMethod.invoke(null, new Object[] { args });

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

                }

             

            ================================分隔線================================

             

            JDK6.0中可以使用下面的方法:

            This example using the Java Compiler API introduced in JDK 1.6 to programmatically compile a Java class. Here we'll compile the Hello.java. The process of compiling can be start by obtaining a JavaCompiler from the ToolProvider.getSystemJavaCompiler().

            The simplest way to compile is by calling the run() method of the compiler and passing the first three arguments with null value. These three argument will use the default System.in,System.out and System.err. The final parameter is the file of the Java class to be compiled.

            When error happened during compilation process the non-zero result code will be returned. After the compile process you'll have the Hello.class just as if you were compiling using thejavac command.

            package org.kodejava.example.tools;
             
            import javax.tools.JavaCompiler;
            import javax.tools.ToolProvider;
             
            public class CompileHello {
            public static void main(String[] args) {
            JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
            int result = compiler.run(null, null, null,
            "src/org/kodejava/example/tools/Hello.java");
             
            System.out.println("Compile result code = " + result);
            }
            }

             


            posted on 2009-06-12 16:37 逛奔的蝸牛 閱讀(2624) 評論(2)  編輯 收藏 引用 所屬分類: Java

            評論

            # re: java: 在程序中編譯和執(zhí)行java程序 2009-06-12 16:56 暗金裝備
            還可以參考: http://konohaleaf.info/index.php?option=com_content&view=article&id=71:programmatically-compile-and-execute-in-java&catid=50:misc-example-programs&Itemid=64
              回復(fù)  更多評論
              

            # re: java: 在程序中編譯和執(zhí)行java程序 2011-05-11 19:41 jay_16
            Runtime run=Runtime.getRuntime();
            run.exec("cmd /c javac Calculator.java");
            run.exec("cmd /c java Calculator");
            Calculator是個(gè)有界面的程序,為什么編譯成功,卻運(yùn)行不出來?
            Calculator程序文件在當(dāng)前程序的目錄文件中的。  回復(fù)  更多評論
              

            午夜福利91久久福利| 久久精品国产亚洲AV香蕉| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 人人狠狠综合久久亚洲| 亚洲中文字幕无码一久久区| 97久久香蕉国产线看观看| 久久免费视频一区| 99久久超碰中文字幕伊人| 久久精品国产黑森林| 亚洲国产精品久久久天堂| 久久久免费观成人影院 | 波多野结衣久久| 99热都是精品久久久久久| 久久精品国产99久久久古代| 久久久久97国产精华液好用吗| 久久久久亚洲Av无码专| 久久天天躁狠狠躁夜夜avapp| 亚洲国产精品久久久久| 精品久久无码中文字幕| 久久综合亚洲色一区二区三区| 精品水蜜桃久久久久久久| 久久AV高清无码| 国产精品亚洲综合久久 | AAA级久久久精品无码片| 亚洲综合伊人久久大杳蕉| 久久99热这里只频精品6| 久久精品国产一区二区三区| 国产 亚洲 欧美 另类 久久| 国产精品久久久久久久久鸭| 久久久久亚洲AV无码网站| 久久久久亚洲精品无码蜜桃| 色婷婷综合久久久久中文一区二区 | 久久久一本精品99久久精品88| 久久久不卡国产精品一区二区| 久久久精品一区二区三区| 久久免费视频网站| 国产A级毛片久久久精品毛片| 丁香狠狠色婷婷久久综合| 国产激情久久久久影院老熟女免费 | 日韩人妻无码精品久久免费一 | 狠狠色丁香久久婷婷综合蜜芽五月|