2014-09-22 2 views
1

У меня есть основной отчет, который вызывает дополнительный отчет, который вызывает другой дополнительный отчет.
У меня есть все 3 в каталоге dash2 в студии отчетов.JasperReports Сервер не может найти вспомогательные отчеты

Когда я использую развертывание отчетов на сервере * JasperReports Server * в основном отчете, он также, по-видимому, развертывает первый вспомогательный отчет (но не суб-отчет). Ну, если я нажимаю правой кнопкой мыши на отчете и выбираю редактирование, то элементы управления и ресурсы перечисляют вспомогательный отчет.

Если я вручную разворачиваю все 3 отчета по одному, я вижу все три в папке отчета в Jaspersoft Studio. Однако, если я попытаюсь запустить основной отчет, я получаю:

Error filling report 
net.sf.jasperreports.engine.JRException: Resource not found at : dash2/dash-kpi.jasper 

Итак, он ищет подзаголовок в dash2. Поэтому я создал dir под названием dash2 в основной папке отчета и скопировал в него вспомогательные отчеты. Такая же ошибка. Таким образом, я вручную воспроизвел ту же структуру, что и в студии отчетов - нет радости. Он никогда не может найти вспомогательный отчет.

В основном докладе, он имеет эту запись:

<subreportExpression><![CDATA["dash2/dash-kpi.jasper"]]></subreportExpression> 

Любые идеи, как исправить?

Он отлично работает в студии отчетов.

Редактировать: попытался удалить «dash2 /» перед именем ресурса. не помогло.

Edit2: попробовал chaing все происшествия dash2/xxx.jasper для репо: xxx.jrxml. Это нарушает не яшма студию в том, что:

  1. отчеты больше не работают в студии
  2. при загрузке основного доклада, он больше не признает зависимые отчеты суб и не загружать их.

Я попытался вручную развернуть все отчеты, но невозможно связать основной отчет с существующим подразделением на сервере jasper. Единственный вариант, который они предлагают, - это отредактировать основной отчет и вручную загрузить файлы jrxml в качестве ресурсов. Я попытался это, но не помогло, до сих пор не могу найти их:

Repository file resource /reports/dashboard_files/dash_kpi.jrmxl could not be loaded 

Интересно, что его использованием реж называется dashboard_files, который не суммируется и не существует. Ссылка на этот каталог отсутствует в любом из файлов jrxml отчетов.

+0

Возможный дубликат [Связывание подписок в iReport, чтобы они также работали на сервере Jasper] (http://stackoverflow.com/questions/7413216/linking-subreports-in-ireport-so-they-also-work-in- яшма-сервер) –

ответ

1

После сильной боли я нашел решение. Кажется, что студия jasper не очень хороша с вложенными вспомогательными отчетами. Вот решение на высоком уровне, которое применяется к серверу 5.6 и Studio 5.6 как минимум:

  1. Начните с отчетов с дополнительными отчетами, обозначенными как «xxx.jasper» в студии.
  2. Разверните основной отчет на сервере яшмы. Он спросит вас, хотите ли вы развернуть вспомогательные отчеты (но не их вспомогательные отчеты). Однако он не делает это правильно, и мы должны это исправить.
  3. Теперь подключитесь к серверу из студии (aka repository explorer)
  4. Ваш отчет будет находиться под SErvers-> your server-> Reports-> reportname-> Main.jrxml. Щелкните правой кнопкой мыши по нему и выберите свойства. Выберите вкладку Редактор ресурсов.
  5. Скопируйте путь родительской папки. например/reports/myreport_files
  6. Теперь вернитесь в студию. Редактировать каждое место во всех отчетах и ​​докладах подразделов, где у вас есть «xxx.jasper» и заменить их «репо: /reports/myreport_files/xxx.jrxml»
  7. сохранить все
  8. Развертывания основного отчет снова.
  9. на сервере Jasper найдите отчет, щелкните его правой кнопкой мыши и выберите EDIT
  10. Нажмите «Управление и ресурсы».
  11. Удалить все ресурсы
  12. Теперь добавьте каждый дополнительный отчет, загрузив вручную каждый файл jrxml. Убедитесь, что вы указали одинаковое имя и идентификатор файла, например. my_sub_report.jrxml
  13. помолитесь, он работает.

ПРИМЕЧАНИЕ 1: если у вас есть какие-либо «-» в ваших подзаголовках, они будут преобразованы в «», и он их не найдет. переименуйте все свои вложенные записи с помощью «-», чтобы использовать «» insead, удалить и повторно развернуть.

ПРИМЕЧАНИЕ 2. Теперь ваши отчеты не будут работать в студии. Хороший один Джаспер. Вы можете попробовать использовать параметры, например:

$P{IsOnServer} ? "repo:/reports/myreport_files/my_sub.jrxml" : "my_su.jasper" 

И создать параметры недобросовестных верно, но я не мог получить эту работу.

Главная заслуга этих ребят:

0

Я преодолел эту проблему, просто не используется параметр onServer. Если вы ставите только имя файла, Studio может захватить этот файл и развернуть его автоматически. Как ни странно, это работает и на сервере.

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