...
String filename = fs[i].getName();String [] arguments=new String[]{"-classpath","d:\\","d:\\"+filename};
javac.compile(arguments);//使用javac需要import什么包呢?
String result=filename.substring(0,filename.indexOf('.'));
Process child=Runtime.getRuntime().exec("java -classpath d:\\ "+result);
System.out.println("java -classpath d:\\ "+result);
...需求是让该程序可以编译并运行在d:\下的文件名为filename的.class文件
但是编译时在javac.compile(arguments);报错
这里需要import什么包呢?求教

解决方案 »

  1.   

    在你的程序中实现javac也要用Runtime.getRuntime().exec("javac "+filename);吧
      

  2.   

    对的
    这个是别人给的代码段
    需要import的包忘记问了
      

  3.   

    呵呵,自己写个javac类不就可以了
      

  4.   

    命令控制台里用javac是不用import的
    不过这里的javac写在一个类里 我编译时说找不到
      

  5.   

    呵呵,何必这么麻烦呢:
    private boolean invokeJavac(Batch batch, List<File> files) {
            List<String> javacArgs = new ArrayList<String>();        // rmic never wants to display javac warnings
            javacArgs.add("-nowarn");        // reproduce relevant options from rmic invocation
            if (batch.debug) {
                javacArgs.add("-g");
            }
            if (batch.classPath != null) {
                javacArgs.add("-classpath");
                javacArgs.add(batch.classPath);
            }        /*
             * For now, rmic still always produces class files that have a class
             * file format version compatible with JDK 1.1.
             */
            javacArgs.add("-source");
            javacArgs.add("1.3");
            javacArgs.add("-target");
            javacArgs.add("1.1");        // add source files to compile
            for (File file : files) {
                javacArgs.add(file.getPath());
            }        // run javac with our output stream
            int status = com.sun.tools.javac.Main.compile(javacArgs
                    .toArray(new String[javacArgs.size()]), new PrintWriter(out,
                    true));
            return status == 0;
        }    // ----------------------inner class-----------------------------
        /**
         * The data for an rmic compliation batch: the processed command line
         * arguments.
         */
        private class Batch {
            boolean keepGenerated = false; // -keep or -keepgenerated        boolean debug = false; // -g        String classPath = null; // -classpath        File destDir = null; // -d        List<Generator> generators = new ArrayList<Generator>();        Class<? extends BatchEnvironment> envClass = BatchEnvironment.class;        List<String> classes = new ArrayList<String>();        Batch() {
            }        /**
             * Returns the Main instance for this batch.
             */
            Main enclosingMain() {
                return Main.this;
            }
        }
    }
      

  6.   

    在classpath中加入tools.jar的路径
    并在程序中加
    private static com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main(); 
    即可使用javac