2015-04-08 5 views
1

Кто-нибудь знает, почему такая муравей задача:Ant задачи идет нормально в основной метод, но останавливается после определенной линии во время Ant исполнения

public void execute() { 
    Timer timer = new Timer(); 
    TimerTask action = new TimerTask() { 
     @SuppressWarnings("ResultOfMethodCallIgnored") 
     public void run() { 
      String urlsForCheckPath = arachniBinPath + "urls.txt"; 
      List<String> urlsForCheck; 
      try { 
       urlsForCheck = FileUtils.readLines(new File(urlsForCheckPath)); 
       if (urlsForCheck != null) { 
        for (String urlForCheck : urlsForCheck) { 
         new File(arachniLogPath).delete(); 
         clearTemporary(urlForCheck);//if something remains after exceptions 
         logger.info(urlForCheck + " previous log and possibly remaining temporary files deleted."); 
         checkURL(urlForCheck); 
         urlForCheck = urlForCheck.replace("/", "-"); 
         convertAndSend(urlForCheck); 
         clearTemporary(urlForCheck); 
         logger.info(urlForCheck + " temporary files deleted."); 
        } 
       } 
      } catch (Exception e) { 
       log(e); 
      } 
     } 
    }; 
    timer.schedule(action, delayBeforeStart); 
} 

идет нормально в основной метод, но останавливается после

logger.info(urlForCheck + " previous log and possibly remaining temporary files deleted."); 

без исключений во время исполнения через ant? Как это можно исправить?

+0

Что вошедшего URL выглядеть (например, какова схема) и что методы между двумя утверждениями бревенчатых делать? – sudocode

+0

https://aaa.bb/cc. checkURL (urlForCheck); - длинный веб-сканер convertAndSend (urlForCheck); - сканирование отчетов и отправка по электронной почте. –

ответ

1

Я думаю, вы должны прочитать этот ответ. Java: Wait for TimerTask to complete before continuing execution

Небольшой пример:

protected final Timer timer = new Timer(); 

public void execute() { 
    CountDownLatch latch = new CountDownLatch(1); 
    timer.schedule(new TimerTask() { 
     public void run() { 
     } 
    }, delayBeforeStart); 
    try { 
     latch.await(); 
    } catch (InterruptedException e) { 
     log(e); 
    } 
    timer.cancel(); 
}