Исключение (я) при попытке отладить отчет Birt - PullRequest
5 голосов
/ 10 мая 2011

Я хочу отладить метод afterDataSetFilled диаграммы. Когда я начинаю отладку, я получаю диалоговое окно, предлагающее мне ввести значения всех параметров отчета (два из которых являются датой и временем). Независимо от того, в каком формате я ввожу параметры datetime, я всегда получаю следующее исключение:

SEVERE: Engine exception
org.eclipse.birt.report.engine.api.impl.ParameterValidationException: The type of parameter "startDate" is expected as "dateTime", not "java.lang.String".
    at org.eclipse.birt.report.engine.api.impl.EngineTask.validateParameterValueType(EngineTask.java:865)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.validateAbstractScalarParameter(EngineTask.java:829)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.access$0(EngineTask.java:756)
    at org.eclipse.birt.report.engine.api.impl.EngineTask$ParameterValidationVisitor.visitScalarParameter(EngineTask.java:686)
    at org.eclipse.birt.report.engine.api.impl.EngineTask$ParameterVisitor.visit(EngineTask.java:1400)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.doValidateParameters(EngineTask.java:670)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:94)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.createReport(ReportLauncher.java:594)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.renderReport(ReportLauncher.java:541)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.run(ReportLauncher.java:455)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.main(ReportLauncher.java:104)
    at org.eclipse.birt.report.debug.internal.core.ReportDebugger.start(ReportDebugger.java:39)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
May 10, 2011 10:08:11 AM org.eclipse.birt.report.debug.internal.core.vm.ReportVMServer$1 run
WARNING: [Server] client disconnected

Я не мог найти, что было не так. Введенные мною значения по умолчанию (в формате гггг-мм-дд ЧЧ: мм: сс) для параметров отчета в порядке, и отчет генерируется правильно. Однако при запуске отладчика они вводятся в другом формате (ММММ д, у ч: мм: сс). Если я оставлю их так, я получу исключение. Если я изменю их на формат гггг-мм-дд чч: мм: сс, я все равно получу исключение. Это известная проблема BIRT или я что-то не так делаю?

Мне удалось обойти эту проблему, жестко закодировав эти значения в запросе SQL (и удалив параметры отчета datetime). Но после того, как я это сделал, появилось еще одно исключение:

SEVERE: Engine exception
org.eclipse.birt.report.engine.api.EngineException: Failed to initialize emitter.
    at org.eclipse.birt.report.engine.emitter.EmitterUtil.getOuputStream(EmitterUtil.java:80)
    at org.eclipse.birt.report.engine.emitter.html.HTMLReportEmitter.initialize(HTMLReportEmitter.java:350)
    at org.eclipse.birt.report.engine.api.impl.EngineTask.initializeContentEmitter(EngineTask.java:2044)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:117)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.createReport(ReportLauncher.java:594)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.renderReport(ReportLauncher.java:541)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.run(ReportLauncher.java:455)
    at org.eclipse.birt.report.debug.internal.core.launcher.ReportLauncher.main(ReportLauncher.java:104)
    at org.eclipse.birt.report.debug.internal.core.ReportDebugger.start(ReportDebugger.java:39)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: java.io.FileNotFoundException: /StandardOCE_PRS2_OperatorProductivity.rptdesign.html (Permission denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
    at org.eclipse.birt.report.engine.emitter.EmitterUtil.getOuputStream(EmitterUtil.java:75)
    ... 22 more

Вы сталкивались с этой проблемой раньше? Что вы предлагаете мне сделать, чтобы это исправить?

Ответы [ 3 ]

8 голосов
/ 24 октября 2011

Я сделал так, как предлагалось:

  • Изменен на стандартную перспективу «Отладка»
  • В полном меню «Выполнить» открылся «Конфигурации отладки»

Я изменил запись «Temp Folder» на каталог вне моей учетной записи пользователя Windows (то есть что-то под C-образным диском, скажем: C: \ Temp \ Birt).Я создал указанный каталог.

Затем отладка Eclipse сработала.

4 голосов
/ 10 мая 2011

Я столкнулся с тем же FileNotFoundException, что и вы сегодня, и нашел решение.

Причина исключения заключается в том, что путь к файлу является абсолютным и пытается сохранить временный файл в / там, где у него нет разрешения на запись. Обходной путь для этого - просто создать файл (/StandardOCE_PRS2_OperatorProductivity.rptdesign.html в вашем случае. Я предполагаю, что вы работаете в Linux) и сделать его доступным для записи пользователем, который запускает Eclipse. Это поможет вам преодолеть эту ошибку, но я только что получил другую сразу после этого, так что это не было хорошим решением для меня. Я думаю, что это, очевидно, ошибка в плагине BIRT, так как он должен был использовать / tmp для этого. Кажется, он даже настроен в конфигурации отладки, но не использует его.

Затем я попытался выяснить, как изменить конфигурацию отладки. Eclipse скрывает это от вас в перспективе «Дизайн отчета», поэтому я какое-то время растерялся, но если вы перейдете в перспективу Java, вы увидите кнопку «Отладка» и полное меню «Выполнить». Откройте «Debug Configurations» из кнопки или из меню, и вы увидите конфигурации, которые плагин BIRT создал для вас ранее.

Если я затем запускаю его оттуда, он использует каталог / tmp, как и должно, и отладка работает. И теперь вы также можете поиграть с конфигурацией отладки. Может быть полезным! : -)

0 голосов
/ 07 декабря 2016

Я согласен с решением Harrys.

Основная причина заключается в том, что откат к настроенной временной папке оценивается только в том случае, если в Eclipse была создана конфигурация отладки.Если для этого отчета была добавлена ​​конфигурация отладки, хорошо работает предварительно заполненная временная папка (временная папка пользователя).Просто создайте Конфигурацию отладки без каких-либо изменений, и это работает.

Если НЕТ конфигурации отладки присутствует для этого отчета, Eclipse не использует значение по умолчанию, упомянутое выше.Это ошибка.

...