Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP使用Eclipse BIRT报表设计器_Php_Classnotfoundexception_Birt_Php Java Bridge - Fatal编程技术网

通过PHP使用Eclipse BIRT报表设计器

通过PHP使用Eclipse BIRT报表设计器,php,classnotfoundexception,birt,php-java-bridge,Php,Classnotfoundexception,Birt,Php Java Bridge,我想在php Web项目中使用Birt报告。 因此,我安装了推荐的Java桥和BIRT运行时 通过将JavaBridgeTemplate621.war和birt.war移动到我的Tomcat 之后,我写了一个叫做BirtEngine的小班: try { $ctx = java_context()->getServletContext(); $this->birdEngine = java("org.eclipse.birt.php.birtengine.BirtEng

我想在php Web项目中使用Birt报告。 因此,我安装了推荐的Java桥和BIRT运行时 通过将JavaBridgeTemplate621.war和birt.war移动到我的Tomcat

之后,我写了一个叫做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
但每次尝试从谷歌和普通网站获得帮助都失败了。
所以我希望这个网站的人能帮助我。

我知道这是一个老问题,但我确实成功地通过PHP java桥运行了BIRT。您的PHP代码是正确的。但您使用WAR文件的方式并非如此

基本上,您可以使用一个包含PHP/JavaBridge文件和BIRT+的war文件,这是一个在JAVA桥中加载BIRT的特殊类


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

如果有人在从php调用BIRT时仍然有问题,这里有一个对我帮助很大的建议。

您指的是哪一个建议?您是否尝试过var_dump()或对返回的异常进行反射?哪一行引发异常?您的类找不到BIRT引擎。您在哪里部署了试图访问引擎的类?在它自己的上下文中?您好,您知道如何在zend javabridge的帮助下实现birt吗