項目結構報告:JasperReports的建設從罐子
戰爭包含:
- Servlet.class
- 的pom.xml(包括JAR的依賴)
罐子:
- 包含在戰爭中使用的類
servlet創建一個實例,並調用方法generate()
:
@Override
public void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
A a = new a();
a.generate();
}
然後,方法generate
中的A.class包含這些行:
InputStream is = this.getClass().getResourceAsStream("/reports/foo.jrxml");
InputStream isSubReport = this.getClass().getResourceAsStream("/reports/foo_subreport.jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(isSubReport);
所以,當我運行這個方法從罐子項目 - 一切都很好。
然而,當我打電話從戰爭這個方法,它有這個罐子是依賴 - 我正在上線異常
JasperDesign jasperDesign = JRXmlLoader.load(isSubReport);
什麼是調用方法從罐子將讀取它的正確方法資源並使其工作?
UPDATE:
還是無解
如果我把在同一報告servlet的戰爭 - 的InputStream工程確定,但如果我被戰爭和jar分裂他們 - 不工作。
凍結
上線JasperDesign jasperDesign = JRXmlLoader.load(isSubReport);
和我有令人驚訝甚至沒有見過沒有深調試異常(不調試沒有例外,白色畫面):
Method threw 'net.sf.jasperreports.engine.JRRuntimeException' exception. Cannot evaluate net.sf.jasperreports.engine.JRRuntimeException.toString()
這(這是jasper-reports lib中的類):
public JasperDesign loadXML(InputSource is) throws JRException {
try {
this.digester.push(this);
this.digester.parse(is);
} catch (SAXException var7) {
throw new JRException(var7);
} catch (IOException var8) {
throw new JRException(var8);
} finally {
this.digester.clear(); // this method works fine
}
//this line can not be reached (somewhere appears exception)
if(this.errors.size() > 0) { ...
並明確甚至一些 - 「messageKey」 和異常的 「detailMessage」:
util.message.provider.not.found
將在幾分鐘內 – quento
等待,我已經進口的嘗試它。問題出在inputStream – quento
你有什麼異常? –