ireport 找不到子报表:Could not load object from location
ireport中提供了自帶屬性$P{SUBREPORT_DIR}當(dāng)我們新建.jrxml文件時默認(rèn)$P{SUBREPORT_DIR}="存放當(dāng)前設(shè)計的.jrxml文件的文件夾絕對路徑"
此時需注意應(yīng)把$P{SUBREPORT_DIR}值設(shè)置為$P{SUBREPORT_DIR}="",這表示獲得當(dāng)前運(yùn)行環(huán)境的.jrxml文件的上級文件絕對路徑
如果不進(jìn)行此設(shè)置則部署到運(yùn)行環(huán)境時會以設(shè)計時的路徑加載.jrxml文件,會報Could not load object from location:.jrxml錯誤
另外如果設(shè)計時用到多級子報表,則應(yīng)當(dāng)把頂級報表的$P{SUBREPORT_DIR}參數(shù)傳給子報表,如果不進(jìn)行此操作則第三級.jrxml文件不能被加載
Could not load object from location:.jrxml
?
在IReport中,主從報表完成制作后,在IReport中能夠正常編譯、運(yùn)行及顯示,但加入Java Web應(yīng)該中時出現(xiàn)下列錯誤:
Could not load object from location : subunitlab.jasper,即主報表找不到子報表的模板(jasper)文件.
主要原因:
主報表找不到子報表的Jasper文件(深入分析)
解決辦法:
在主報表中設(shè)置變量SUBREPORT_DIR(若不存在則新建),代表子報表模板文件的真識路徑,設(shè)置子報表的屬性Subreport Expression 的值為:$P{SUBREPORT_DIR}+"subreportname.jasper",通過程序動態(tài)設(shè)置SUBREPORT_DIR,使得主報表能夠獲得子報表模板文件的真識路徑.
步驟如下:
1.設(shè)置主報表變量: SUBREPORT_DIR
?? Veiw?Parameters?選中SUBREPORT_DIR變量名?Modify?設(shè)置Default value Expression的值為:””;
?? 2.修改子報表屬性
?? 在主報表中右擊子報表,選擇Subreport(other)選項(xiàng),設(shè)置Subreport Expression的值為:$P{SUBREPORT_DIR}+"subreportname.jasper"
?? 3.在Action中動態(tài)獲得子報表的真識路徑,設(shè)置成SUBREPORT_DIR變量的值:param.setParameters("SUBREPORT_DIR",request.getRealPath("/Reports/")+"/");
另:對于多個子報表,做法類似,只需設(shè)置子報表屬性即可(前提:所有子報表存放在同一路徑下),若存放在不同的路徑下, 需在主報表中建立多個表示子報表路徑的變量,一一對應(yīng)到各個子報表上,并通過程序一一設(shè)定其真識路徑.
總結(jié)
以上是生活随笔為你收集整理的ireport 找不到子报表:Could not load object from location的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iReport序号自增列
- 下一篇: IReport报表分组与分组统计