BIRT — .rptdesign имеет ошибку и не может быть запущен

Я успешно настроил BIRT Viewer и PHP/Java Bridge и могу просматривать/открывать отчет "testWebReport.rptdesign", полученный с этот образец пакета через оба из них следующим образом:

Просмотрщик BIRT:

http://192.168.0.90:8080/birt/run?__report=report/testWebReport.rptdesign

Мост PHP/Java: Источник/руководство

<?php

define ("JAVA_HOSTS", "192.168.0.90:8080");
define ("JAVA_SERVLET", "/JavaBridge/JavaBridge.phpjavabridge");
$pth = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$path_parts = pathinfo($pth);
$imageURLPrefix = $path_parts['dirname'] ."/sessionChartImages/";
require_once("java/Java.inc");

session_start(); 

$here = getcwd();

$ctx = java_context()->getServletContext();
$birtReportEngine = java("org.eclipse.birt.php.birtengine.BirtEngine")->getBirtEngine($ctx);
java_context()->onShutdown(java("org.eclipse.birt.php.birtengine.BirtEngine")->getShutdownHook());

try{

$report = $birtReportEngine->openReportDesign("${here}/payment.rptdesign");
$task = $birtReportEngine->createRunAndRenderTask($report);

$taskOptions = new java("org.eclipse.birt.report.engine.api.HTMLRenderOption");
$outputStream = new java("java.io.ByteArrayOutputStream");
$taskOptions->setOutputStream($outputStream);
$taskOptions->setOutputFormat("html");
$ih = new java( "org.eclipse.birt.report.engine.api.HTMLServerImageHandler");
$taskOptions->setImageHandler($ih);

$taskOptions->setBaseImageURL($imageURLPrefix . session_id());
$taskOptions->setImageDirectory($here . "/sessionChartImages/" . session_id());

$task->setRenderOption( $taskOptions );
$task->run();
$task->close();

} catch (JavaException $e) {
 echo $e; //"Error Calling BIRT";

}
echo $outputStream;

?>

Теперь я создаю новый отчет в BIRT для Eclipse, а затем пытаюсь запустить его обоими способами, но работает только первый. Для второго я получил это сообщение:

Я уже выяснил, что проблема заключается не в содержании отчета, потому что не имеет значения, создаю ли я отчет, который имеет соединение с базой данных и отображает некоторые диаграммы, или я просто создаю пустой - результат тоже самое.

У кого-нибудь есть решение для этого? Это действительно препятствует любому прогрессу в моей работе в течение нескольких дней.

Я, наконец, решил эту проблему, отредактировав следующую строку на вкладке Eclipse «Источник XML»:


person petter386    schedule 14.06.2012    source источник


Ответы (1)


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

<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.23" id="1">

У кого-нибудь есть объяснение этому? Проблема в PHP/Java Bridge?

person petter386    schedule 14.06.2012
comment
Не думайте, что это мост, у меня такая же проблема в чистом Java-приложении. - person petter386; 14.06.2012
comment
Это просто проблема несовместимости версий, не так ли? - person Kingsolmn; 22.08.2012
comment
Версия 3.2.22 создана с помощью BIRT Designer 3.7.1. Версия 3.2.23 создана с помощью BIRT Designer 4.2.1. Проблема возникает, если вы пытаетесь запустить/открыть файл дизайна отчета, который был создан с помощью более новой версии дизайнера BIRT. - person Artem Shafranov; 18.04.2013
comment
[[o:Exception]:"java.lang.Exception: Ошибка вызова: [[o:ReportEngine]]->openReportDesign((o:String)[o:String]). Причина: org.eclipse.birt.report. engine.api.EngineException: Файл проекта:/C:/Program%20Files%20(x86)/EasyPHP-5.3.9/www/BirtBridgeTest/payment.rptdesign содержит ошибку и не может быть запущен. VM: 1.7.0_04@http://java.oracle.com/" at: #-14 org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.getReportDesignHandle(ReportEngineHelper.java:260) #- 13 org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:274) #-12 org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java: 196) #-11 org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:130) #-10 org.eclipse.birt.report.engine.api.impl.ReportEngine.openReportDesign( ReportEngine.java:304) #-9 sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) #-8 sun.ref lect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) #-7 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) #-6 java.lang.reflect.Method.invoke(Method.java:601) #- 5 php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044) #-4 php.java.bridge.Request.handleRequest(Request.java:417) #-3 php.java.bridge.Request.handleRequests(Request .java:500) #-2 php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) #-1 php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) #0 C :\Program Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\java\Java.inc(232): java_ThrowExceptionProxyFactory->getProxy(6, '@V', 'T', true) #1 C:\ Program Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\java\Java.inc(360): java_Arg->getResult(true) #2 C:\Program Files (x86)\EasyPHP-5.3.9\www \BirtBridgeTest\java\Java.inc(366): java_Client->getWrappedResult(true) #3 C:\Program Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\java\Java.inc(560): ja va_Client->getResult() #4 C:\Program Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\java\Java.inc(1752): java_Client->invokeMethod(4, 'openReportDesig...', Array) #5 C:\Program Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\java\Java.inc(1851): java_JavaProxy->__call('openReportDesig...', Array) #6 C: \Program Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\java\Java.inc(1999): java_AbstractJava->_call('openReportDesig...', Array) #7 C:\Program Файлы (x86)\EasyPHP-5. 3.9\www\BirtBridgeTest\HTMLOutput.php(20): Java->_call('openReportDesig...', Array) #8 C:\Program Files (x86)\EasyPHP-5.3.9\www\ BirtBridgeTest\HTMLOutput.php(20): java_InternalJava->openReportDesign('C:\Program File...') #9 {main}] - person hvb; 10.11.2016