2014-11-24 221 views
2

我使用Eclipse的BIRT通過Java使用org.eclipse.birt.runtime版本4.4.0來呈現報告。Eclipse BIRT腳本報告:'無效的JavaScript表達式:dataSetRow'異常

當試圖呈現報表,BIRT正在返回:

org.eclipse.birt.data.engine.core.DataException: Invalid Javascript expression: dataSetRow["name"]. (以及類似的用於每個dataSetRowrow錯誤)在IRunAndRenderTask.getErrors();

該模板可以正常使用BIRT設計器並通過該應用程序進行渲染,但在嘗試使用Java進行渲染時會中斷。

我在整個網絡上做了大量的搜索,很多人都建議在應用程序中存在衝突js.jar。在我正在處理的應用程序中,情況並非如此。唯一的javascript/rhino實例是通過BIRT導入的實例。

我也嘗試以下解決方案:

  • 剔除捆綁javascript和Mozilla的
  • 更新BIRT導入最新的犀牛/ javascript來4.4.1,創造了最新的BIRT設計報表模板
  • 降低了報表模板,只顯示由DB返回一個值(在這種情況下,經銷商的「名稱」)

這項目正在使用Maven,並在Tomcat 7中運行 - 使用Java 6.

數據庫正在使用mysql。

如果需要,可以提供更多詳細信息。


編輯:被這個問題擺弄周圍一點點,並發現以下幾點:不打數據庫精細渲染

  • 基本報告 - 甚至JavaScript表達式
  • 一旦我嘗試從查詢中獲取數據集,然後拋出Invalid Javascript表達式,例如在模板中的這一部分:<data id="624"> <property name="dataSet">Dealership</property> <list-property name="boundDataColumns"> <structure> <property name="name">name</property> <text-property name="displayName">name</text-property> <expression name="expression" type="javascript">dataSetRow["name"]</expression> <property name="dataType">string</property> </structure> </list-property> <property name="resultSetColumn">name</property> </data>
    • 放置在上面datasetRow部分的任何值拋出一個無效的JavaScript錯誤
+0

是否有一個非常簡單的報告工作(即只使用標題和簡單的動態文本如「Hello」+「world」,而不使用數據庫)?您是否嘗試在java應用程序中應用兩個單獨的「運行」和「渲染」任務(這是AFAIK推薦的方法)? – Dominique 2014-11-24 09:18:14

+0

只是嘗試這樣做: 添加下列行: '<表達式名稱= 「表達」 類型= 「JavaScript的」> 「你好」 + 「世界」 +參數[ 「testparam」]' 和它呈現細。 我還沒有把它分割成'run'和'render',現在我只是做: 'task.run();'' task.close();' 它似乎很好。我會嘗試運行然後渲染。 事實上,它沒有數據庫的工作使我認爲,驅動程序正在或什麼東西......不知道 - 我已經考慮添加驅動程序(MySQL),但無法找到適當的Maven依賴項。 – kahyoung 2014-11-24 09:46:05

+0

編輯:MYSQL驅動程序似乎工作,因爲它實際上擊中了我的數據庫與正確的查詢 – kahyoung 2014-11-24 10:56:35

回答

0

發現這個問題出了什麼問題。

我們使用Maven並決定檢查並查看是否存在衝突的庫。

我們找到了一個:Apache.FOP。

拿出來,之後Birt工作得很好。

0

我認爲這可能因版本問題的BIRT的pom.xml引起Maven倉庫。在這個版本中,我在Maven遇到了很多麻煩。

您應該試試這個:將BIRT maven dependency設置爲您的項目中的「provided」,並將所有jar「手動」添加到official Eclipse birt-runtime 4.4.0 package的應用中。例如,在我身邊,我在Netbeans中創建了一個自定義的本地Maven依賴項來處理這個問題,它工作得很好。我希望這會有所幫助。

+0

我已經用maven在類似的項目中使用DB2而不是MySQL,它的工作原理...所以我不知道它是否該問題。當你遇到這些問題時,你是否使用過mysql? 雖然我仍然會給你的解決方案,我會讓你知道結果。 – kahyoung 2014-11-24 20:44:00

+0

這些Maven問題不是特定於MySql的,因此這可能不是同一個問題。如果它適用於DB2,那麼甚至不值得嘗試我所建議的。你如何從你的報告中訪問MySQL? JDBC數據源,連接池,用於查詢構建器的JDBC,...?該數據源是直接在報告中聲明還是從.rptlibrary鏈接?什麼是Java應用程序運行環境的JVM版本? – Dominique 2014-11-25 08:33:14

+0

該報告使用mysql JDBC驅動程序 - 它直接在報告中聲明。 使用Java 1.6。 – kahyoung 2014-11-26 00:26:17