2013-09-04 2 views
1

Я пытаюсь прочитать папку в сети и получить список файлов txt. При тестировании локально в Eclipse он работает нормально, однако всякий раз, когда я развертываю его на сервере Apache Tomcat 7, он возвращает null.Чтение каталога возвращает null при развертывании на сервере apache tomcat 7.0

Это не похоже на проблему с правом доступа, так как у сервера есть доступ к папке, которую я пытаюсь просмотреть. Я не уверен, что там происходит, это настройка на сервере, которую мне нужно изменить или что-то еще?

private List<File> readDirectory() { 
    File test = new File(envMap.get(database)); 
    List<File> files = new ArrayList<File>(); 
    try { 
     files = FileListing.getFileListing(test); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    List<File> txtFiles = new ArrayList<File>(); 
    if (files != null) { 
     for (File file : files) { 
      if (file.isFile() && file.getName().endsWith(".txt")) { 
       txtFiles.add(file); 
      } 
     } 
    } 
    return txtFiles; 
} 

Я использовал этот http://www.javapractices.com/topic/TopicAction.do?Id=68 для FileListing.getFileListing

После двойной проверки выясняется, что я получаю FileNotFoundException: Directory does not exist. Каталог существует, и на сервере есть права доступа, поэтому я не уверен, что делать.

+0

Какая часть 'null'? 'FileListing.getFileListing (тест);'? –

+0

Да. После этого список файлов имеет значение null. Он отлично работает в Eclipse, поэтому я не думаю, что есть проблема с функцией. – noisegrrrl

+3

Тогда вам нужно будет показать нам, как это реализовано. Также нет смысла сначала инициализировать его '= new ArrayList ();' поскольку вы переназначаете его. –

ответ

0

Узнал, в чем проблема, выясняется, что по умолчанию Apache работает под учетной записью локальной системы, у которой нет доступа к сети. Изменение проблемы с другой учетной записью с доступом к сети решило проблему.

http://blog.mattwoodward.com/2010/08/accessing-network-drive-from-apache-and.html

0

files не может быть null. Ваш код использует

static private List<File> getFileListingNoSort(File aStartingDir) throws FileNotFoundException { 
    List<File> result = new ArrayList<File>(); 
    File[] filesAndDirs = aStartingDir.listFiles(); // may return null 
    List<File> filesDirs = Arrays.asList(filesAndDirs); // would throw NPE 
    for(File file : filesDirs) { 
     result.add(file); 
     if (!file.isFile()) { 
      //must be a directory    
      List<File> deeperList = getFileListingNoSort(file); 
      result.addAll(deeperList); 
     } 
    } 
    return result; 
} 

Вы уверены, что указали нам правильный код?

+0

Yup, это, безусловно, правильный код. – noisegrrrl

+0

@Emualynk Я удалю свой ответ, но вы обязательно должны отладить код и проверить, откуда берется «null». –

+0

Есть ли способ получить доступ к консоли java, когда он запущен на сервере (а не затмение)? – noisegrrrl

Смежные вопросы