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 for Eclipse で新しいレポートを作成し、両方の方法で実行しようとしましたが、最初の方法のみが機能しています。2番目のメッセージについては、次のメッセージが表示されました。
[[o:Exception]:"java.lang.Exception: 呼び出しに失敗しました: [[o:ReportEngine]]->openReportDesign((o:String)[o:String])。原因: org.eclipse.birt.report。 engine.api.EngineException:デザイン ファイル file:/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.reflect.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): java_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 Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\HTMLOutput.php(20): Java-> _call('openReportDesig...' 、配列) #8 C:\Program Files (x86)\EasyPHP-5.3.9\www\BirtBridgeTest\HTMLOutput.php(20): java_InternalJava->openReportDesign('C:\Program File...') #9 {主要}]
データベースに接続してグラフを表示するレポートを作成するか、空白のレポートを作成するかは問題ではないため、問題の原因はレポートの内容ではないことが既にわかりました。結果は次のとおりです。同じ。
誰かがこれに対する解決策を持っていますか? ここ数日間、私の仕事のあらゆる種類の進歩が本当に妨げられています。