通过PHP使用Eclipse BIRT Report Designer [英] Using Eclipse BIRT Report Designer via PHP

查看:109
本文介绍了通过PHP使用Eclipse BIRT Report Designer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在php网站项目中使用Birt报告. 因此,我安装了推荐的Java Bridge和BIRT Runtime 通过将JavaBridgeTemplate621.war和birt.war移至我的Tomcat.

I want to use Birt Reports in an php webproject. Therefore I installed the recommend Java Bridge and the BIRT Runtime by moving JavaBridgeTemplate621.war and birt.war to my Tomcat.

此后,我编写了一个简短的类,称为BirtEngine:

After that I wrote a short class calling the 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,发现了这个异常:

As I recognize that $e->getMessage() returns "" I take a look at the catalina.out and there I found this exception:

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)

尤其是这一行引起了我的注意:

Especially this line takes my attention:

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

但是,每次尝试从Google和常见网站获得帮助的尝试都失败了. 所以我希望这个站点的人可以帮助我.

But each try to get help from google and common websites failed. So I hope someone from this site can help me.

推荐答案

我知道这是一个老问题,但是我确实通过PHP Java桥成功运行了BIRT.您拥有的PHP代码正确.但是您使用WAR文件的方式却不是.

I know this is an old question, but I do run BIRT through the PHP java bridge successfully. The PHP code you have is correct. But the way that you are using the WAR files is not.

基本上,您可以使用一个包含PHP/JavaBridge文件和BIRT的战争文件,以及一个特殊的类来在JAVA桥中加载BIRT.

Basically you one war file with both the PHP/JavaBridge files and BIRT + a special class to load BIRT within the JAVA bridge.

如果您仍然无法解决此问题,则可以使正在使用的WAR文件可用.

If you still haven't solved this problem, I might be able to make the WAR file I'm using available.

这篇关于通过PHP使用Eclipse BIRT Report Designer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆