Javascript 4.5.0中的BIRT报告生成在正则表达式(<;inline>;2)后抛出无效标志
我们最近将BIRT从2.6升级到了4.5.0,使用旧版本开发的所有报表设计都可以在4.5.0中正常工作,只有一个例外 报告生成成功,但HTML报告显示以下错误Javascript 4.5.0中的BIRT报告生成在正则表达式(<;inline>;2)后抛出无效标志,javascript,java,eclipse,birt,Javascript,Java,Eclipse,Birt,我们最近将BIRT从2.6升级到了4.5.0,使用旧版本开发的所有报表设计都可以在4.5.0中正常工作,只有一个例外 报告生成成功,但HTML报告显示以下错误 “org.mozilla.javascript.EvaluatorException:正则表达式(#2)后的标志无效” 我对BIRT很陌生,我不明白是什么导致了这个问题。如果有人能帮助我了解这个问题的根本原因,那就太好了 HTML报告文件中显示的堆栈跟踪: The following items have errors: OdaData
“org.mozilla.javascript.EvaluatorException:正则表达式(#2)后的标志无效”
我对BIRT很陌生,我不明白是什么导致了这个问题。如果有人能帮助我了解这个问题的根本原因,那就太好了
HTML报告文件中显示的堆栈跟踪:
The following items have errors:
OdaDataSet AllFloors:
- invalid flag after regular expression (<inline>#2)
birt.core.JavascriptError ( 1 time(s) )
detail : org.eclipse.birt.report.engine.api.EngineException: invalid flag after regular expression (<inline>#2)
at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1245)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.prepare(AbstractDataEngine.java:164)
at org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:122)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:42)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportExecutor.execute(LocalizedReportExecutor.java:61)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:179)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
at com.trapeze.appl.shared.reports.AbstractReportGenerator.generateHTMLReport(AbstractReportGenerator.java:942)
at com.trapeze.appl.shared.reports.AbstractReportGenerator.generateReport(AbstractReportGenerator.java:838)
at com.trapeze.appl.shared.reports.ReportService$1.generate(ReportService.java:98)
at com.trapeze.appl.rm.server.reports.RMReportService.generateReport(RMReportService.java:289)
at com.trapeze.appl.rm.server.reports.RMReportService.generateClientReport(RMReportService.java:426)
at com.trapeze.appl.shared.reports.ReportServlet.generateClientSideReportByXML(ReportServlet.java:215)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:180)
at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:109)
at com.caucho.hessian.server.HessianServlet.service(HessianServlet.java:396)
at com.trapeze.fw.services.server.HessianServiceServlet.service(HessianServiceServlet.java:93)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:677)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: org.eclipse.birt.core.exception.CoreException: invalid flag after regular expression (<inline>#2)
at org.eclipse.birt.core.script.JavascriptEvalUtil.wrapRhinoException(JavascriptEvalUtil.java:307)
at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateRawScript(JavascriptEvalUtil.java:106)
at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateScript(JavascriptEvalUtil.java:138)
at org.eclipse.birt.report.data.adapter.internal.adapter.OdaDataSourceAdapter.<init>(OdaDataSourceAdapter.java:87)
at org.eclipse.birt.report.data.adapter.impl.ModelAdapter.adaptDataSource(ModelAdapter.java:122)
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.createDataSourceDesign(ModelDteApiAdapter.java:188)
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.doDefineDataSource(ModelDteApiAdapter.java:246)
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.defineDataSet(ModelDteApiAdapter.java:233)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.prepare(AbstractDataEngine.java:159)
... 33 more
Caused by: org.mozilla.javascript.EvaluatorException: invalid flag after regular expression (<inline>#2)
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:77)
at org.mozilla.javascript.DefaultErrorReporter.error(DefaultErrorReporter.java:64)
at org.mozilla.javascript.Parser.addError(Parser.java:188)
at org.mozilla.javascript.Parser.addError(Parser.java:166)
at org.mozilla.javascript.Parser.reportError(Parser.java:223)
at org.mozilla.javascript.Parser.reportError(Parser.java:210)
at org.mozilla.javascript.Parser.reportError(Parser.java:203)
at org.mozilla.javascript.TokenStream.readRegExp(TokenStream.java:921)
at org.mozilla.javascript.Parser.primaryExpr(Parser.java:2798)
at org.mozilla.javascript.Parser.memberExpr(Parser.java:2406)
at org.mozilla.javascript.Parser.unaryExpr(Parser.java:2304)
at org.mozilla.javascript.Parser.mulExpr(Parser.java:2229)
at org.mozilla.javascript.Parser.addExpr(Parser.java:2213)
at org.mozilla.javascript.Parser.shiftExpr(Parser.java:2194)
at org.mozilla.javascript.Parser.relExpr(Parser.java:2169)
at org.mozilla.javascript.Parser.eqExpr(Parser.java:2141)
at org.mozilla.javascript.Parser.bitAndExpr(Parser.java:2130)
at org.mozilla.javascript.Parser.bitXorExpr(Parser.java:2119)
at org.mozilla.javascript.Parser.bitOrExpr(Parser.java:2108)
at org.mozilla.javascript.Parser.andExpr(Parser.java:2097)
at org.mozilla.javascript.Parser.orExpr(Parser.java:2086)
at org.mozilla.javascript.Parser.condExpr(Parser.java:2062)
at org.mozilla.javascript.Parser.assignExpr(Parser.java:2033)
at org.mozilla.javascript.Parser.expr(Parser.java:2012)
at org.mozilla.javascript.Parser.statementHelper(Parser.java:1039)
at org.mozilla.javascript.Parser.nameOrLabel(Parser.java:1793)
at org.mozilla.javascript.Parser.statementHelper(Parser.java:1032)
at org.mozilla.javascript.Parser.statement(Parser.java:901)
at org.mozilla.javascript.Parser.statements(Parser.java:856)
at org.mozilla.javascript.Parser.block(Parser.java:1688)
at org.mozilla.javascript.Parser.statementHelper(Parser.java:1010)
at org.mozilla.javascript.Parser.statement(Parser.java:901)
at org.mozilla.javascript.Parser.ifStatement(Parser.java:1082)
at org.mozilla.javascript.Parser.statementHelper(Parser.java:947)
at org.mozilla.javascript.Parser.statement(Parser.java:901)
at org.mozilla.javascript.Parser.parse(Parser.java:540)
at org.mozilla.javascript.Parser.parse(Parser.java:478)
at org.mozilla.javascript.Context.compileImpl(Context.java:2348)
at org.mozilla.javascript.Context.compileString(Context.java:1335)
at org.mozilla.javascript.Context.compileString(Context.java:1324)
at org.eclipse.birt.core.script.JavascriptEvalUtil.getCompiledScript(JavascriptEvalUtil.java:156)
at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateRawScript(JavascriptEvalUtil.java:95)
... 40 more
OdaDataSet AllDevices:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet AllAPs:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet APClosetDistance:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet APClosetDistanceInOneAP:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet APSingnalStrength:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet GraphRssiHeatMap:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet HeatMapLegend:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet AllFloorContourGraph:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet AllAPContourGraph:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet AllRFPoint:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet AllRFPointSS_A:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet AllRFPointSS_B:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet APInventory:
+ invalid flag after regular expression (<inline>#2)
OdaDataSet DeviceInventory:
+ invalid flag after regular expression (<inline>#2)
TabularCube MPCube:
+ invalid flag after regular expression (<inline>#2)
TabularCube MXCube:
+ invalid flag after regular expression (<inline>#2)
List (id = 27425):
+ DataSet "APDistance" is not defined in report.
ReportDesign (id = 1):
+ An exception occurred during processing. Please see the following message for details:
invalid flag after regular expression (<inline>#2)
以下项目有错误:
所有楼层:
-正则表达式(#2)后的标志无效
birt.core.JavascriptError(1次)
详细信息:org.eclipse.birt.report.engine.api.EngineeException:正则表达式后面的标志无效(#2)
位于org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1245)
位于org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.prepare(AbstractDataEngine.java:164)
位于org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:122)
位于org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
位于org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:42)
位于org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:60)
位于org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportExecutor.execute(LocalizedReportExecutor.java:61)
位于org.eclipse.birt.report.engine.api.impl.runandendertask.doRun(runandendertask.java:179)
位于org.eclipse.birt.report.engine.api.impl.runandendertask.run(runandendertask.java:77)
位于com.traffee.appl.shared.reports.AbstractReportGenerator.generateHTMLReport(AbstractReportGenerator.java:942)
位于com.traffee.appl.shared.reports.AbstractReportGenerator.generateReport(AbstractReportGenerator.java:838)
位于com.traffee.appl.shared.reports.ReportService$1.generate(ReportService.java:98)
在com.traffee.appl.rm.server.reports.RMReportService.generateReport(RMReportService.java:289)
位于com.traffee.appl.rm.server.reports.RMReportService.generateClientReport(RMReportService.java:426)
位于com.traffee.appl.shared.reports.ReportServlet.generateClientSideReportByXML(ReportServlet.java:215)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:497)
位于com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:180)
位于com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:109)
位于com.caucho.hessian.server.HessianServlet.service(HessianServlet.java:396)
位于com.traffee.fw.services.server.HessianServiceServlet.service(HessianServiceServlet.java:93)
位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
位于org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:677)
位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
位于org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
位于org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
位于org.mortbay.http.HttpServer.service(HttpServer.java:909)
位于org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
位于org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
位于org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
位于org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
位于org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
位于org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
原因:org.eclipse.birt.core.exception.coreeexception:正则表达式后面的标志无效(#2)
位于org.eclipse.birt.core.script.JavascriptEvalUtil.wrapRhinoException(JavascriptEvalUtil.java:307)
位于org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateRawScript(JavascriptEvalUtil.java:106)
位于org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateScript(JavascriptEvalUtil.java:138)
位于org.eclipse.birt.report.data.adapter.internal.adapter.ODatasourceAdapter.(ODatasourceAdapter.java:87)
在org.eclipse.birt.report.data.adapter.impl.ModelAdapter.AdapteDataSource(ModelAdapter.java:122)上
位于org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.createDataSourceDesign(ModelDteApiAdapter.java:188)
在org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.doDefineDataSource(ModelDteApiAdapter.java:246)上
位于org.eclipse.birt.report.engine.adapter.modeldteAppiadapter.defineDataSet(modeldteAppiadapter.java:233)
位于org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.prepare(AbstractDataEngine.java:159)
... 33多
原因:org.mozilla.javascript.EvaluatorException:正则表达式(#2)后的标志无效
位于org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:77)
位于org.mozilla.javascript.DefaultErrorReporter.error(DefaultErrorReporter.java:64)
位于org.mozilla.javascript.Parser.addError(Parser.java:188)
位于org.mozilla.javascript.Parser.addError(Parser.java:166)
位于org.mozilla.javascript.Parser.reportError(Parser.java:223)
位于org.mozilla.javascript.Parser.reportError(Parser.java:210)
位于org.mozilla.javascript.Parser.reportError(Parser.java:203)
位于org.mozilla.javascript.TokenStream.readRegExp(TokenStream.java:921)
位于org.mozilla.javascript.Parser.primaryExpr(Parser.java:2798)
位于org.mozilla.javascript.Parser.memberExpr(Parser.java:2406)
位于org.mozilla.javascript.Parser.unaryExpr(Parser.jav
<data-sets>
<oda-data-set extensionID="org.eclipse.datatools.enablement.oda.xml.dataSet" name="AllFloors" id="1707">
<structure name="cachedMetaData">
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">id</property>
<property name="dataType">string</property>
....
....
....
<property name="dataSource">reportDataSource</property>
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">id</property>
<property name="nativeName">id</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
....
....
<xml-property name="queryText"><![CDATA[table0#-TNAME-#table0#:#[//FLOOR]#:#{id;STRING;@id}, .... ]]></xml-property>
<xml-property name="designerValues"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<model:DesignValues xmlns:design="http://www.eclipse.org/datatools/connectivity/oda/design" xmlns:model="http://www.eclipse.org/birt/report/model/adapter/odaModel">
<Version>1.0</Version>
<design:ResultSets derivedMetaData="true">
<design:resultSetDefinitions>
<design:resultSetColumns>
<design:resultColumnDefinitions>
<design:attributes>
<design:name>id</design:name>
<design:position>1</design:position>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>-1</design:precision>
<design:scale>-1</design:scale>
<design:nullability>Unknown</design:nullability>
</design:attributes>
<design:usageHints>
<design:label>id</design:label>
<design:formattingHints/>
</design:usageHints>
</design:resultColumnDefinitions>
....
</design:resultSetColumns>
</design:resultSetDefinitions>
</design:ResultSets>
</model:DesignValues>]]></xml-property>
<list-property name="privateDriverProperties">
<ex-property>
<name>MAX_ROW</name>
<value>-1</value>
</ex-property>
<ex-property>
<name>XML_FILE</name>
</ex-property>
</list-property>
<expression name="value">var servlet=reportContext.getHttpServletRequest();
if(servlet != null && servlet.getAttribute("attributeBean").isDesigner() ){
config[ "birt.viewer.working.path" ] + "/../../../path/to/sample/xml/data/file.xml";
}</expression>