Java не распознает файл в JAR - PullRequest
0 голосов
/ 07 марта 2011

У меня есть файл базы данных .csv внутри JAR-файла моей java-программы. Программа отлично работает в среде IDE NetBeans перед упаковкой, но, как только я это сделаю, она отказывается верить, что файл находится в нем, хотя я распечатал путь, по которому она искала, и разархивировал JAR, чтобы быть уверенным, что я сказал это искать в нужном месте. Как заставить Java увидеть это?

  try
  {
    String path = Main.class.getResource("/items.csv").getPath();
    db = new java.io.File(path);
    loadValues(db);
  }
  catch (java.io.FileNotFoundException ex1)
  {
    System.out.println("Could not find database file (" + ui.db + ").");
  }

Ответы [ 3 ]

5 голосов
/ 07 марта 2011

Не создавайте File объект для ресурса, так как может не быть File. File представляет только «настоящие» файлы в файловой системе. Что касается ОС, то «файл» внутри .jar-файла - это всего несколько байтов.

Вам нужно будет использовать getResourceAsStream(), чтобы получить InputStream и прочитать его.

2 голосов
/ 07 марта 2011

Как только вы упакуете его в файл jar, он больше не будет прямым файлом

Попробуйте прочитать это с InputStream

InputStream input = getClass().getRessourceAsStream("/classpath/to/my/items.csv");

Также см.

1 голос
/ 07 марта 2011

Используйте Class.getResourceAsStream для загрузки файлов внутри банки:

    InputStream is = Main.class.getResourceAsStream("/items.csv");
    loadValues(is);

Измените ваш loadValues метод для работы с InputStream вместо File.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...