Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 得到一些愚蠢的语法错误_Java_Ant - Fatal编程技术网

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型的。电话是从房子里打来的@贾斯汀,是的,这是“当一个陌生人打电话”的结尾。每当有人强调“内部”这个词时,都有必要引用这句话。