2010-06-21 66 views
0

獲得一個語法錯誤在行:得到了一些愚蠢的語法錯誤

`List<Class> 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(); 
      } 
     } 
    } 

} 
} 
+1

在execute方法內部有findClasses方法是否正確? – 2010-06-21 18:56:53

+0

我把它放在哪裏? iam對Java很新,所以任何幫助表示讚賞 – Jony 2010-06-21 18:58:03

+0

哈哈,當我第一次讀這篇文章時,我幾乎修正了錯誤,因爲我只是假設它是一個type-o。 – jjnguy 2010-06-21 19:05:59

回答

4

你定義的方法findClasses方法execute

+1

電話是從屋內來的! – 2010-06-21 19:12:59

+0

@本,來自一些電影,對吧? – jjnguy 2010-06-21 19:14:21

+1

@Justin,是的,它是「當陌生人來電時」的扭曲結局。有人強調「內部」這個詞時,有必要引用這條線。 – 2010-06-21 19:31:11

6

問題是您定義了​​方法,然後嘗試在其中定義findClasses()方法。

這不是合法的Java語法。

在定義另一個方法之前,您需要關閉execute的方法體。

3

你試圖在另一個方法中聲明一個方法。將方法的定義移動到public void execute()方法之外,並在需要時調用它。

1

看起來你正試圖在另一種方法中定義一個方法。 public void execute()是你的外部方法,你正試圖定義List findClasses(File directory)作爲其中的方法拋出ClassNotFoundException。

你不能在Java中這樣做。你可以做的是將findClasses方法拉出到與execute相同的級別,然後在execute方法內調用它。