首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(JavaCompiler)同时编译多个文件

(JavaCompiler)同时编译多个文件
EN

Stack Overflow用户
提问于 2015-03-05 20:57:44
回答 1查看 949关注 0票数 4

因此,我正在构建一个使用内置的JavaCompiler API来编译.java文件目录的程序。我让它通过一个目录进行解析来编译文件,甚至编译它们,只是没有按我需要的顺序编译。我拿回了经典的“找不到符号”,因为某些类相互依赖。所以一组用javac编译得很好的文件在我的程序中失败了。

我需要一种方法来按一定的顺序编译它们(我的最后一个选项实际上是通过文件解析以获取引用,但我不希望如此),或者同时进行编译。

这是我的密码:

代码语言:javascript
复制
import javax.tools.*;
import java.io.*;
import java.util.*;

public class SimpleCompileTest 
{
    public static void main(String[] args) 
    {

        try{
            File[] files;
            File dir = new File("Thing");
            files = dir.listFiles(new FilenameFilter() {
                public boolean accept(File dir, String name) {
                    return name.toLowerCase().endsWith(".java");
                }
            });

        File file = new File("Errors.txt");
        try{
            FileOutputStream errorStream = new FileOutputStream("Errors.txt");

            JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
            for(int i = 0; i < files.length; i++)
            {
                int compilationResult = compiler.run(null, null, errorStream, files[i].getPath());
                        if(compilationResult == 0){
                            System.out.println("Compilation is successful");
                        }else{
                            System.out.println("Compilation Failed");
                        }
            }
        }catch(Exception e)
        {
            System.out.println("error in compiler");
        }
    }catch(Exception h)
    {
        System.out.println("error in filename");
    }
    }

}

编辑:通配符(即*.java)不工作在JavaCompiler.

答:从注释中,我尝试向编译器传递一个包含所有文件的所有路径的String[],而不是String[]()。效果很好!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 22:23:19

从注释中,我尝试向编译器传递一个包含所有文件的所有路径的String[],而不是String[]()。以下是解决办法。

代码语言:javascript
复制
import javax.tools.*;
import java.io.*;
import java.util.*;

public class SimpleCompileTest 
{
    public static void main(String[] args) 
    {

        try{
            File[] files;
            File dir = new File("Thing");
            files = dir.listFiles(new FilenameFilter() {
                public boolean accept(File dir, String name) {
                    return name.toLowerCase().endsWith(".java");
                }
            });
            String[] filenames = new String[files.length];
            for(int i = 0; i < files.length; i++)
                filenames[i] = files[i].getName();

        File file = new File("Errors.txt");
        try{
            FileOutputStream errorStream = new FileOutputStream("Errors.txt");

            JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

                int compilationResult = compiler.run(null, null, errorStream, filenames);
                        if(compilationResult == 0){
                            System.out.println("Compilation is successful");
                        }else{
                            System.out.println("Compilation Failed");
                        }
        }catch(Exception e)
        {
            System.out.println("error in compiler");
        }
    }catch(Exception h)
    {
        System.out.println("error in filename");
    }
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28887575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档