2012-05-07 2 views
0

Apache + PHP, Tomcat 및 JavaBridge를 사용하여 BIRT를로드하고 문서를 렌더링하려고하는 테스트를 실행 중입니다.org.eclipse.birt.php.birtengine.BirtEngine 클래스를 JavaBridge에 추가하는 방법은 무엇입니까?

<?php  
ini_set('display_errors','On'); 
error_reporting(E_ALL); 

require_once('http://127.0.0.1:8081/Bridge/java/Java.inc'); 
$here = getcwd(); 

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}/TopNPercent.rptdesign"); 
$task = $birtReportEngine->createRunAndRenderTask($report); 
$taskOptions = new java("org.eclipse.birt.report.engine.api.PDFRenderOption"); 
$outputStream = new java("java.io.ByteArrayOutputStream"); 
$taskOptions->setOutputStream($outputStream); 
$taskOptions->setOutputFormat("pdf"); 

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

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

} 

//echo $outputStream; 
echo java_values($outputStream->toByteArray()); 
?> 

제가 아파치 + PHP 통해 액세스하면 내가 다음과 같은 오류가 나타납니다 :

<br /> 
<b>Fatal error</b>: Uncaught [[o:Exception]:&quot;java.lang.Exception: 
ReferenceClass failed: new org.eclipse.birt.php.birtengine.BirtEngine. Cause: 
java.lang.ClassNotFoundException: org.eclipse.birt.php.birtengine.BirtEngine VM: 
[email protected]://java.oracle.com/&quot; at: 
#-10 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1438) 
#-9 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284) 
#-8 java.lang.Class.forName0(Native Method) 
#-7 java.lang.Class.forName(Unknown Source) 
#-6 php.java.bridge.Util.classForName(Util.java:1518) 
#-5 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) 
#-4 php.java.bridge.Request.handleRequest(Request.java:444) 
#-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 http://127.0.0.1:8081/Bridge/java/Java.inc(232): java_ThrowExceptionProxyFactory-&gt;getProxy(3, 'org.apache.cata...', 'T', false) 
#1 http://127. in <b>http://127.0.0.1:8081/Bridge/java/Java.inc</b> on line <b>195</b><br /> 

127.0.0.1:8081

톰캣 서버입니다 이것은 PHP 파일입니다. "org.eclipse.birt.php.birtengine.BirtEngine"클래스를 찾을 수없는 것 같습니다. birt-runtime-3_7_2/lib 폴더의 내용을 JavaBridge의 WEB-INF/lib에 복사했지만 도움이되지 않습니다. 나는 다양한 사이트에서 대답을 찾으려고 노력했지만, 유일한 대답은 실제로 대답이없는 동일한 문제가 있다고 생각합니다 : LINK. 누구든지이 문제에 대한 해결책을 알거나 JavaBridge가 그 클래스를 볼 수 있도록 만드는 방법을 알고 있습니까?

답변

0

require_once는 URL을 매개 변수로 사용합니다. 파일의 절대 경로를 시도한 적이 있습니까? 광산은 "C :/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/JavaBridge/java/Java.inc"와 같이 작동합니다.

http://www.birt-exchange.org/org/devshare/deploying-birt-reports/743-calling-birt-from-php/

어쨌든, 당신에게 행운을 빕니다, 나는에 있었을 때 나는 꽤 머리를 잃은 알고

또한, 적절한 구성 단계의 자세한 사항은이 문서를보고 할 수 있습니다 이 구성을 수행하십시오.

관련 문제