Проблемы с доступом к отчету в jar-файле - PullRequest
3 голосов
/ 17 ноября 2010

У меня есть jar-приложение, которое содержит несколько отчетов (файлы .jasper), и путь получения отчета:

getClass().getResource("/reportes/mireporte.jasper").toString();

, но при выполнении я получаю следующую ошибку:FileNotFoundException хотя отчет находится в файле jar, когда я открываю его с помощью winrar.

Мои вопросы:

  1. Это способ получить путь к отчетуфайлы jar?
  2. Можно ли открыть отчеты, находящиеся в файле jar?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Почему вы конвертируете ресурс в строку ??

Попробуйте использовать (в зависимости от того, как вы хотите использовать ресурс):

  • getResource("/report/mireporte.jasper").getFile()

  • getResource("/report/mireporte.jasper").getInputStream()

Возвращенный объект из 'getResource' является URL:

0 голосов
/ 17 ноября 2010

1) Это способ получить путь к отчету в jar-файлах?

Да, позвоните по номеру getClass().getClassLoader().getResources("mireporte.jasper") - он выдаст вам список ресурсов, соответствующий названию.

2) Можно ли открывать отчеты из файла jar?

Да! Используйте getClass().getResourceAsStream("...") и читайте с него!

Пример:

public static void main(String... args) throws IOException {
    final ClassLoader cl = GetResource.class.getClassLoader();

    // print all resources (could be more than one)
    Enumeration<URL> resources =
        cl.getResources("foo/bla/tjo/mireporte.jasper");

    while (resources.hasMoreElements())
        System.out.println(resources.nextElement());


    // read one of the files
    Scanner s = new Scanner(
            cl.getResourceAsStream("foo/bla/tjo/mireporte.jasper"));
    try {
        while (s.hasNextLine()) {
            System.out.println(s.nextLine());
        }
    } finally {
        if (s != null)
            s.close();
    }
}
...