2015-11-12 2 views
0

Я работаю над проектом плагина Eclipse. Внутри этого проекта у меня есть папка resources, которая содержит простой файл ASCII, который содержит строки с String. Эти String s используются в выпадающем меню, с помощью ui. Если я запустил новый запуск Eclipse, все будет работать так, как должно, и содержимое файла будет успешно использовано в раскрывающемся меню, но если я запустил приложение и запустил его, выпадающее меню пуст, а это значит, что файл может Не читайте.Файл ASCII в проекте плагина Eclipse не отображается после экспорта

Внутри plugin.xml (вкладка «Сборка») Я поместил папку ресурса (которая содержит файл ASCII) в бинарной сборке.

Это, как я извлечь файл построчно:

public class ParameterExtractor { 

    private final static String FILE_PATH = "/resources/parameters"; 

    public ArrayList<String> extractParameters() throws IOException { 
     ArrayList<String> params = new ArrayList<String>(); 
     URL url = FileLocator.resolve(getClass().getResource(FILE_PATH)); 
     URI uri = null; 
     try { 
      uri = url.toURI(); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } 
     if (uri != null) { 
      try { 
       File file = new File(uri); 
       FileReader fileReader = new FileReader(file); 
       BufferedReader bufferedReader = new BufferedReader(fileReader); 
       String line; 
       while ((line = bufferedReader.readLine()) != null) { 
        params.add(line); 
       } 
       fileReader.close(); 
      } catch (Exception ioe) { 
       ioe.printStackTrace(); 
      } 
     } 
     return params; 
    } 
} 

И это, как я использовать возвращаемый ArrayList:

ArrayList<String> params = new ArrayList<String>(); 
try { 
    params = new ParameterExtractor().extractParameters(); 
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 
final Combo combo = new Combo(container, SWT.BORDER); 
combo.setItems(params.toArray(new String[params.size()])); 

Что может вызвать проблемы и как я могу решить эту проблему ?

Я был бы признателен за любую помощь!

ответ

1

FileLocator.resolve не гарантирует возврат URL-адреса, который может использоваться для чтения файла. Вместо того, чтобы использовать:

Bundle bundle = ... your plugin bundle 

URL url = FileLocator.find(bundle, new Path(FILE_PATH), null); 

url = FileLocator.toFileURL(url); 

URL-адрес, возвращаемый toFileURL подходит для чтения с помощью File и FileReader.

+0

Это решило проблему. Большое спасибо, Грег! – John

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