java Jasper 报告:未找到资源
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10293571/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Jasper Report : Resource not found
提问by Krushnakant
I am developing using Netbeans 7.1.
我正在使用 Netbeans 7.1 进行开发。
In my jasper report I have subreport in it. It works in one place perfectly. I copied and pasted in another place and now shows this error :
在我的 jasper 报告中,我有子报告。它完美地在一个地方工作。我复制并粘贴到另一个地方,现在显示此错误:
net.sf.jasperreports.engine.JRException: Resource not found at : D:\ShareMarket\build\web\WEB-INF\classes\custom\kksharemarket/contractDetail.jasper
at net.sf.jasperreports.repo.RepositoryUtil.getResource(RepositoryUtil.java:155)
at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:126)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:317)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:347)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:275)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2021)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:755)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:265)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:746)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:281)
at org.apache.jsp.reportmgr_jsp._jspService(reportmgr_jsp.java:966)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
回答by Joop Eggen
The path D:\ShareMarket\build\web\WEB-INF\classes\custom\kksharemarket
is suspicious. It should be /custom/kksharemarket
because it lies in the class path of your application. The application probably is packed in a jar/war, and a file path will not do. Probably the resource is fetched not via the file system too, but on the class path. That normally is what "resource" means in java terms.
路径D:\ShareMarket\build\web\WEB-INF\classes\custom\kksharemarket
可疑。应该是/custom/kksharemarket
因为它位于您的应用程序的类路径中。应用程序可能被打包在 jar/war 中,文件路径不行。可能资源也不是通过文件系统获取的,而是在类路径上获取的。这通常是 Java 术语中“资源”的含义。
It worked on first development, because the directory structure was present.
它适用于第一次开发,因为存在目录结构。
回答by Rangi Lin
D:\ShareMarket\build\web\WEB-INF\classes\custom\kksharemarket/contractDetail.jasper
^^^
I guess you hard-coded file separator when composing the jasper file path.
我猜你在编写 jasper 文件路径时硬编码了文件分隔符。