【发布时间】:2019-12-20 15:06:19
【问题描述】:
我的应用程序在 localhost 上运行良好,但在部署到 tomcat 时出现问题
我用来读取文件的代码是:
File jasperFile = new File(getClass().getClassLoader().getResource("reports/Header.jasper").getFile());
我在 catalina 中收到此错误:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: file:/usr/local/apache-tomcat9/webapps/com.peek.facture.server/WEB-INF/lib/facture.server-1.0.0-SNAPSHOT.jar!/reports/Header.jasper
触发我的是“!” jar 名称的末尾,它来自哪里?
我也试过下载jar,解压,我的Header.jasper在resources/reports/文件夹中是正确的
【问题讨论】:
-
试试 /reports/Header.jasper
-
使用 /reports 在 localhost 中获取 java.lang.NullPointerException
-
你是如何在“localhost”上运行它的?您是刚从 IDE 启动它,还是构建 + 部署 jar 或 war 到本地 tomcat?
-
当它从我的 IDE 启动时,它可以工作,但在 tomcat 上运行时出现此错误
-
停止使用文件 IO 获取嵌入在您的 jar 中且可从类路径获得的资源。文件 IO 用于文件。不适用于嵌入式资源。你不需要文件。只需将 URL 传递给 Jasper。如果它不接受 URL,请使用 getResourceAsStream() 并传递返回的流。
标签: java tomcat filenotfoundexception