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编译器用我们新的编译器编译一把):
效果: