jdk9源文件编译器默认只支持单java文件编译,如何解决

jason/com/sun/tools/javac/main/Option.java中public void process(OptionHelper helper, String option) throws InvalidValueException方法添加一个对D:\programs\javac\src\*.java的处理,详细实现如下:


修改前代码如下:
        public void process(OptionHelper helper, String option) throws InvalidValueException {
            if (option.endsWith(".java") ) {
                Path p = Paths.get(option);
                if (!Files.exists(p)) {
                    throw helper.newInvalidValueException("err.file.not.found", p);
                }
                if (!Files.isRegularFile(p)) {
                    throw helper.newInvalidValueException("err.file.not.file", p);
                }
                helper.addFile(p);
            } else {
                helper.addClassName(option);
            }
        }


修改后代码:
        public void showFilesOfPath(OptionHelper helper,File f) throws InvalidValueException
        {
            File[] fileArray=f.listFiles();
            if(fileArray!=null)
            {
                for (int i = 0; i < fileArray.length; i++) {
                    //递归调用
                    if(fileArray[i].toString().endsWith(".java"))
                    {
                        Path p = Paths.get(fileArray[i].toString());
                        if (!Files.exists(p))
                        {
                            throw helper.newInvalidValueException("err.file.not.found", p);
                        }
                        if (!Files.isRegularFile(p))
                        {
                            throw helper.newInvalidValueException("err.file.not.file", p);
                        }
                        helper.addFile(p);
                    }
                    else if(fileArray[i].isDirectory())
                    {
                        showFilesOfPath(helper,fileArray[i]);
                    }
                }
            }
        }


        @Override
        public void process(OptionHelper helper, String option) throws InvalidValueException {
            if(option.endsWith("*.java"))
            {
                String s2=option.replace("*.java", "");
                File f=new File(s2);
                if(f.isDirectory())
                {
                    showFilesOfPath(helper,f);
                }
            }
            else if (option.endsWith(".java") )
            {
                Path p = Paths.get(option);
                if (!Files.exists(p)) {
                    throw helper.newInvalidValueException("err.file.not.found", p);
                }
                if (!Files.isRegularFile(p)) {
                    throw helper.newInvalidValueException("err.file.not.file", p);
                }
                helper.addFile(p);
            } else {
                helper.addClassName(option);
            }
        }
测试结果(把javac编译器用我们新的编译器编译一把):
效果:

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值