Java 得到一些愚蠢的语法错误
在第行获取语法错误:Java 得到一些愚蠢的语法错误,java,ant,Java,Ant,在第行获取语法错误: `List<Class> findClasses(File directory)` throws `ClassNotFoundException`... `List findClasses(File directory)`throws`ClassNotFoundException`。。。 不知道为什么。这是我的密码 import org.apache.tools.ant.Task; import java.util.*; import java.io.*;
`List<Class> findClasses(File directory)` throws `ClassNotFoundException`...
`List findClasses(File directory)`throws`ClassNotFoundException`。。。
不知道为什么。这是我的密码
import org.apache.tools.ant.Task;
import java.util.*;
import java.io.*;
public class CreateTestPackage extends Task
{
String allTestsFile = getProject().getProperty("alltestfiles")+ getProject().getProperty("testfile");
public void execute()
{
List<Class> findClasses(File directory) throws ClassNotFoundException
{
List<Class> classes = new ArrayList<Class>();
if (!directory.exists())
{
return classes;
}
File[] files = directory.listFiles(new FilenameFilter()
{
public boolean accept( File dir, String name )
{
return name.matches("test.*\\.class");
}
});
for (File file : files)
{
if (file.isDirectory())
{
assert !file.getName().contains(".");
classes.addAll(findClasses(file));
}
else if (file.getName().endsWith(".class"))
{
classes.add(Class.forName(file.getName().substring(0, file.getName().length() - 6)));
}
}
return classes;
}
for(Class c : classes)
{
string packageName=c.getPackage().getName();
BufferedWriter out =null;
try
{
out = new BufferedWriter(new FileWriter(testfile));
out.write(packageName+"\n");
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (out!=null)
try
{
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
import org.apache.tools.ant.Task;
导入java.util.*;
导入java.io.*;
公共类CreateTestPackage扩展任务
{
字符串allTestsFile=getProject().getProperty(“alltestfiles”)+getProject().getProperty(“testfile”);
public void execute()
{
列出FindClass(文件目录)引发ClassNotFoundException
{
列表类=新的ArrayList();
如果(!directory.exists())
{
返回类;
}
File[]files=directory.listFiles(新文件名过滤器()
{
公共布尔接受(文件目录,字符串名称)
{
返回name.matches(“test.*\\.class”);
}
});
用于(文件:文件)
{
if(file.isDirectory())
{
assert!file.getName()包含(“.”);
addAll(findClasses(file));
}
else if(file.getName().endsWith(“.class”))
{
add(Class.forName(file.getName().substring(0,file.getName().length()-6));
}
}
返回类;
}
用于(c类:类)
{
字符串packageName=c.getPackage().getName();
BufferedWriter out=null;
尝试
{
out=新的BufferedWriter(新的FileWriter(testfile));
out.write(packageName+“\n”);
}
捕获(IOE异常)
{
e、 printStackTrace();
}
最后
{
if(out!=null)
尝试
{
out.close();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
}
}
}
}
您在方法execute
中定义方法findClasses
问题是您定义了execute()
方法,然后尝试在该方法中定义findClasses()
方法
这不是合法的Java语法
在定义另一个方法之前,您需要关闭
execute
的方法体。您试图在另一个方法中声明一个方法。将List findClasses(File directory)
方法的定义移到public void execute()
方法之外,并在需要时调用它。看起来您试图在另一个方法中定义一个方法。public void execute()是您的外部方法,您正在尝试定义List FindClass(文件目录)并将ClassNotFoundException作为其中的一个方法
在Java中不能这样做。相反,您可以将findClasses方法拉到与execute相同的级别,然后从execute方法内部调用它。将findClasses方法放在execute方法内部是否正确?我将它放在哪里?我对java非常陌生,所以非常感谢您的帮助。哈哈,当我第一次读到这篇文章时,我几乎修复了错误,因为我只是假设它是o型的。电话是从房子里打来的@贾斯汀,是的,这是“当一个陌生人打电话”的结尾。每当有人强调“内部”这个词时,都有必要引用这句话。