I have created a simple report that uses a web service as a data source. When I place the rptdesign into my birt-viewer folder in Tomcat it runs fine.<br />
<br />
When I attempt to use PHP JavaBridge to run the report (regardless of the rptdesign location), I get the following error:<br />
<br />
o:Exception]:"java.lang.Exception: Invoke failed: [[o:ReportEngine->openReportDesign((o:String)[o:String]). Cause: org.eclipse.birt.report.engine.api.EngineException: The design file file:/C:/xampp_171/htdocs/volunteer/sites/default/files/volunteerreport.rptdesign has error and can not be run. VM: <a href='mailto:' title='E-mail Link' class='bbc_email'>1.6.0_18@
http://java.sun.com</a>/" at: #-31 org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:248) #-30 org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:191) #-29 org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.openReportDesign(ReportEngineHelper.java:125) #-28 org.eclipse.birt.report.engine.api.impl.ReportEngine.openReportDesign(ReportEngine.java:239) #-27 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) #-26 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) #-25 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) #-24 java.lang.reflect.Method.invoke(Unknown Source) #-23 php.java.bridge.JavaBridge.Invoke(JavaBridge.java:990) #-22 php.java.bridge.Request.handleRequest(Request.java:415) #-21 php.java.bridge.Request.handleRequests(Request.java:491) #-20 php.java.servlet.PhpJavaServlet.handleHttpConnection(PhpJavaServlet.java:170) #-19 php.java.servlet.PhpJavaServlet.handlePut(PhpJavaServlet.java:186) #-18 php.java.servlet.PhpJavaServlet.doPut(PhpJavaServlet.java:195) #-17 javax.servlet.http.HttpServlet.service(HttpServlet.java:640) #-16 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) #-15 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) #-14 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) #-13 php.java.servlet.PhpCGIFilter.doFilter(PhpCGIFilter.java:126) #-12 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) #-11 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) #-10 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) #-9 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) #-8 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) #-7 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) #-6 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) #-5 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) #-4 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) #-3 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) #-2 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) #-1 java.lang.Thread.run(Unknown Source) #0 C:xampp_171htdocsJavaBridgejavaJava.inc(230): java_ThrowExceptionProxyFactory->getProxy(6, '
@V', 'T', true) #1 C:xampp_171htdocsJavaBridgejavaJava.inc(356): java_Arg->getResult(true) #2 C:xampp_171htdocsJavaBridgejavaJava.inc(362): java_Client->getWrappedResult(true) #3 C:xampp_171htdocsJavaBridgejavaJava.inc(554): java_Client->getResult() #4 C:xampp_171htdocsJavaBridgejavaJava.inc(1711): java_Client->invokeMethod(4, 'openReportDesig...', Array) #5 C:xampp_171htdocsJavaBridgejavaJava.inc(1810): java_JavaProxy->__call('openReportDesig...', Array) #6 C:xampp_171htdocsJavaBridgejavaJava.inc(1958): java_AbstractJava->__call('openReportDesig...', Array) #7 [internal function]: Java->__call('openReportDesig...', Array) #8 C:xampp_171htdocstest.php(16): java_InternalJava->openReportDesign('C:xampp_171ht...') #9 {main}]<br />
<br />
I know PHP but almost no Java, so I'm not able to make sense of what this error means. My code is almost an exact copy of the example at <a class='bbc_url' href='
http://www.theserverside.com/news/1363642/Intergrating-BIRT-with-PHP'>Intergrating BIRT with PHP</a>. Here it is below:<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
define ("JAVA_HOSTS", "127.0.0.1:8080");
define ("JAVA_SERVLET", "/JavaBridge/JavaBridge.phpjavabridge");
require_once("JavaBridge/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}/volunteer/sites/default/files/volunteerreport.rptdesign");
$task = $birtReportEngine->createRunAndRenderTask($report);
//$task->setParameterValue("Top Count", new java("java.lang.Integer", 6));
$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;
</pre>
<br />
I'm using JavaBridge 6.1.0, PHP 5.2.9, Tomcat 6.0.18, BIRT Viewer and Engine 2.5.1, JRE 1.6.0_18. Any advice for troubleshooting this is very appreciated.