Прочитать файл .jasper из target / jasper - PullRequest
2 голосов
/ 05 декабря 2011

Я пытаюсь использовать Jasper с помощью jasperreports-maven-plugin.

Таким образом, вы создаете .jrxml в каталоге src / main / jasperreports, а плагин компилирует его и создает файл .jasper в target/Джаспер.Пока это работает.

Теперь я хотел бы прочитать этот файл .jasper в класс Java, чтобы заполнить отчет.Вот где моя проблема.Как мне получить доступ к этому файлу .jasper из target / jasper?

Я подумал, что мне нужно добавить его в качестве дополнительного каталога ресурсов в моем файле pom.xml:

  <build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>target/jasper</directory>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jasperreports-maven-plugin</artifactId>
            <configuration>
              <outputDirectory>${project.build.directory}/jasper</outputDirectory>
            </configuration>
            <executions>
              <execution>
              <goals>
                  <goal>compile-reports</goal>
              </goals>
              </execution>
            </executions>
        ...

И затем получить его, используяgetResource как это:

URL resource = getClass().getResource("/target/jasper/DataSourceReport.jasper");

Однако, это возвращает нуль.Файл DataSourceReport.jasper находится внутри моего проекта в target / jasper, но, похоже, он не может его найти.

Может кто-нибудь сказать мне, что я делаю неправильно или почему это не работает?

Ответы [ 5 ]

1 голос
/ 06 декабря 2011

Спасибо. Это было действительно то, что я упустил. Элемент resource только удостоверил, что папка импортирована как ресурс в Eclipse, но мне нужно было добавить другой плагин maven, чтобы указать более одной папки ресурсов для добавления в созданный jar. Я думал, что это было сделано элементом ресурсов.

Это то, что я добавил, чтобы оно заработало:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>build-helper-maven-plugin</artifactId>
      <version>1.7</version>
      <executions>
        <execution>
          <id>add-source</id>
          <phase>generate-sources</phase>
          <goals>
            <goal>add-source</goal>
          </goals>
          <configuration>
            <sources>
              <source>${basedir}/src/main/resources</source>
              <source>${project.build.directory}/jasper</source>
            </sources>
          </configuration>
        </execution>
      </executions>
    </plugin>
1 голос
/ 28 февраля 2014

Вы можете использовать YourClassName.class.getResourceAsStream (jasperLocation) он вернет вам входной поток файла и входной поток, который вы можете передать JRLoader. Это может помочь вам.

0 голосов
/ 31 декабря 2018

Таким образом, ваш jrxml будет запускаться каждый раз, когда вы запускаете приложение. Я рекомендую использовать зависимость JasperReports для компиляции вашего jasper из репозитория классов. Путь как

держите свой репозиторий Jasper в пути классов Загрузите и скомпилируйте его с помощью следующего кода:

       //jasper is the repository under classses repo
       //ReceiveReport.jasper is the report file
       jasperStream = this.getClass().getResourceAsStream("/jasper/ReceiveReport.jasper");

Используйте эту зависимость

       <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.4.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-fonts</artifactId>
            <version>6.0.0</version>
        </dependency>
0 голосов
/ 24 мая 2018

Откройте этот файл .jasper в ireport. В ireport есть несколько опций, просто откройте этот файл, и вы увидите одно всплывающее окно "Вам нужно конвертировать этот файл в .jrxml?" нажмите «Да».

0 голосов
/ 05 декабря 2011

Вопрос больше в том, как загрузить файл из ресурса в Java, чем в плагин Jasper и т. Д.

Плагин работает для того, что вам нужно, чтобы правильно загрузить файл (.jasper) дляваше приложение.

Ресурсы зависят от созданной вами банки.Возможно, вы пропустите это местоположение с определениями отчетов.Попробуйте открыть файл jar и проверьте, что в нем содержатся отчеты.

Здесь описывает, как управлять ресурсами в проекте Java.

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