Сървърът на JasperReports не може да намери подотчети

Имам основен отчет, който извиква подотчет, който извиква друг подотчет.
Имам всичките 3 в директория, наречена dash2 в report studio.

Когато използвам разгръщане на студия за отчети към *JasperReports Server * на основния отчет, изглежда също така се разгръща първият подотчет (но не и подподотчетът). Е, ако щракна с десния бутон върху отчета и избера редактиране, след това Контроли и ресурси, той изброява подотчета.

Ако внедря ръчно всичките 3 отчета един по един, виждам и трите в папката с отчети в Jaspersoft Studio. Ако обаче се опитам да изпълня основния отчет, получавам:

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

Така че търси подотчет в dash2. Така че създадох директория, наречена dash2, в основната папка с отчети и копирах подотчетите в нея. Същата грешка. Така че ръчно възпроизведох същата структура като в студиото за отчети - никаква радост. Никога не може да намери подотчета.

В основния отчет има следния запис:

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

Някакви идеи как да се поправи?

Работи добре в Report Studio.

Редактиране: опитах да премахна "dash2/" от пред името на ресурса. не помогна.

Edit2: опитах да свържа всички повторения на dash2/xxx.jasper до repo:xxx.jrxml. Това нарушава студиото на Джаспър в това, че:

  1. докладите вече не работят в студио
  2. когато качите основния отчет, той вече не разпознава зависимите подотчети и не ги качва.

Опитах ръчно да внедря всички отчети, но няма начин да свържа основен отчет със съществуващ подотчет в сървъра на jasper. Единствената опция, която предлагат, е да редактирате основния отчет и ръчно да качите jrxml файловете като ресурси. Опитах това, но не помогна, все още не мога да ги намеря:

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

Интересното е, че използва директория, наречена dashboard_files, която не съществува. Няма препратка към тази директория в нито един от jrxml файловете на отчетите.


person John Little    schedule 22.09.2014    source източник
comment
възможен дубликат на Свързване на подотчети в iReport, така че те също работа в сървър на Jasper   -  person Alex K    schedule 23.09.2014


Отговори (2)


След много болка намерих решение. Изглежда, че студиото на jasper не е много добро с вложените подотчети. Ето едно решение на високо ниво, което важи поне за сървър 5.6 и Studio 5.6:

  1. Започнете с докладите с подотчетите, определени като "xxx.jasper" в студиото.
  2. Разположете основния отчет на сървъра на jasper. Той ще ви попита дали искате да разположите подотчетите (но не и техните подотчети). Въпреки това не го прави правилно и трябва да го поправим.
  3. Сега се свържете със сървъра от студио (известен още като изследовател на хранилище)
  4. Вашият отчет ще бъде под SErvers->вашият сървър->Reports->reportname->Main.jrxml. Щракнете с десния бутон върху него и изберете свойства. Изберете раздел Редактор на ресурси.
  5. копирайте пътя на родителската папка. напр. /reports/myreport_files
  6. Сега се върнете в студиото. Редактирайте всяко място във всичките си отчети и подотчети, където имате „xxx.jasper“, и ги заменете с „repo:/reports/myreport_files/xxx.jrxml“
  7. спаси всичко
  8. Разположете основния отчет отново.
  9. в Jasper Server, намерете отчета, щракнете с десния бутон върху него и изберете РЕДАКТИРАНЕ
  10. Кликнете върху „Контроли и ресурси“.
  11. Изтрийте всички ресурси
  12. Сега добавете обратно всеки подотчет, като качите на ръка всеки jrxml файл. Уверете се, че сте му дали същото име и ID като файла, напр. my_sub_report.jrxml
  13. молете се да работи.

ЗАБЕЛЕЖКА 1: ако имате някакви "-" в имената на вашите подотчети, те ще бъдат преобразувани в "" и той няма да ги намери. преименувайте всичките си подотчети с „-“, за да използвате „“ вместо тях, премахнете и разположете отново.

ЗАБЕЛЕЖКА 2: Сега вашите отчети няма да работят в студио. Браво Джаспър. Можете да опитате да използвате параметри, напр.

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

И създайте параметрите по подразбиране на true, но не можах да накарам това да работи.

Основна заслуга на тези момчета:

person John Little    schedule 22.09.2014

Преодолях този проблем, като просто НЕ използвах параметъра onServer. Ако поставите само името на файла, Studio може да вземе този файл и да го внедри автоматично. Колкото и да е странно, това работи и на сървъра.

person user4371138    schedule 17.12.2014