2011-03-24 96 views
8

我想在php web项目中使用Birt报告。 因此,我通过将JavaBridgeTemplate621.war和birt.war移动到我的Tomcat来安装了推荐的Java Bridge和BIRT Runtime 。通过PHP使用Eclipse BIRT报告设计器

之后,我写了一个简短类调用BirtEngine:

try { 
    $ctx = java_context()->getServletContext(); 
    $this->birdEngine = java("org.eclipse.birt.php.birtengine.BirtEngine")->getBirtEngine($ctx); 
    java_context()->onShutdown(
     java("org.eclipse.birt.php.birtengine.BirtEngine")->getShutdownHook() 
    ); 
} catch (java_InternalException $e) { 
    die($e->getMessage()); 
} 

当我认识到,$e->getMessage()回报""我看看catalina.out的还有我发现这个异常:

23.03.2011 15:02:43 org.apache.cxf.interceptor.AttachmentInInterceptor handleMessage 
INFO: AttachmentInInterceptor skipped in HTTP GET method 
23.03.2011 15:02:43 org.apache.cxf.interceptor.StaxInInterceptor handleMessage 
INFO: StaxInInterceptor skipped. 
23.03.2011 15:02:43 org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor handleMessage 
INFO: ReadHeadersInterceptor skipped in HTTP GET method 
23.03.2011 15:02:43 org.apache.cxf.phase.PhaseInterceptorChain doIntercept 
INFO: Interceptor has thrown exception, unwinding now 
org.apache.cxf.interceptor.Fault: No such operation: 
     at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:77) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) 
     at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78) 
     at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92) 
     at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:285) 
     at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:168) 
     at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:175) 
     at org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFServlet.java:157) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
     at java.lang.Thread.run(Thread.java:662) 
java.lang.ClassNotFoundException: org.eclipse.birt.php.birtengine.BirtEngine 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:247) 
     at php.java.bridge.Util.classForName(Util.java:1518) 
     at php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) 
     at php.java.bridge.Request.handleRequest(Request.java:444) 
     at php.java.bridge.Request.handleRequests(Request.java:500) 
     at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) 
     at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) 

特别是这条线引起了我的注意:

java.lang.ClassNotFoundException: org.eclipse.birt.php.birtengine.BirtEngine 

但每个尝试从谷歌和普通网站获得帮助失败。 所以我希望来自这个网站的人可以帮助我。

+0

你指的是哪个建议?你有没有尝试var_dump()或反射的异常返回?哪一行抛出异常? – hakre 2011-04-03 09:11:06

+0

你的班级找不到BIRT引擎。你在哪里部署班级试图访问引擎?在它自己的情况下? – MystikSpiral 2011-04-05 14:31:22

回答

1

我知道这是一个老问题,但我通过PHP java桥接成功地运行了BIRT。你所拥有的PHP代码是正确的。但是你使用WAR文件的方式不是。

基本上你有一个战争文件同时具有PHP/JavaBridge文件和BIRT +一个特殊的类来加载JAVA桥中的BIRT。

如果你还没有解决这个问题,我可能会使我正在使用的WAR文件可用。

+0

你好你知道如何在zend javabridge的帮助下实施birt吗? – 2012-03-01 11:43:01