当前位置: 首页 > 面试题库 >

无法通过JRXmlLoader加载jar文件中的jrxml:正在获取java.io.FileNotFoundException

伊温书
2023-03-14
问题内容

我在 Java 应用程序中使用 JasperReports 。 __

我有一个名为“ reports”的包,用于存储所有生成的报告。这是我在应用程序中调用jasper报告的方式。

JasperDesign jd  = JRXmlLoader.load("C:\\Users\\Sandaru Weerathunga\\Desktop\\Dasatha Institute\\src\\reports\\teacherPay.jrxml");

可以了
我没有给出完整的路径,而是尝试了:

JasperDesign jd  = JRXmlLoader.load("/reports/teacherPay.jrxml");

但这在运行程序时显示错误:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: 
/reports/teacherPay.jrxml (The system cannot find the path specified)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:176)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)

不适合提供 JRXmlLoader 的完整路径,因为如果要在其他计算机上运行此应用程序,则必须根据计算机路径更改所有编码。所以帮我


问题答案:

/reports/teacherPay.jrxml是绝对文件路径,也就是说,转到当前驱动器的根目录并teacherPay.jrxmlreports目录中找到文件…

如果我正确阅读了您的问题,那不是您想要的

相反,请尝试将报告作为资源加载(鉴于您声明该报告位于 package

JasperDesign jd  = JRXmlLoader.load(getClass().getResource("/reports/teacherPay.jrxml"));

例如,如果报表未打包在您的应用程序上下文中,则您将需要使用相对路径。

JasperDesign jd  = JRXmlLoader.load("reports/teacherPay.jrxml");

现在,话虽如此。除非您在运行时进行动态更改,否则不应该加载jrxml文件,而应该预编译文件,而应加载.jasper文件。这将更快,并且通常更少出现错误。



 类似资料:
  • 问题内容: 我有一堆iReport源代码(jrxml)通过以下路径位于工作区中: 当我将源代码打包到jar文件中时。我将拥有以下文件结构目录: 在我的源代码中,我具有以下代码来验证jrxml文件的存在: 当我通过命令执行此jar文件时: 我碰到一个错误提示,说特定的jrxml_file不存在。 我的疑问: 我只是想知道我是否允许读取位于MyJar.jar中的jrxml_file? 在读取jrxml

  • 它抛出以下错误:

  • 问题内容: 这是我尝试将Maven项目部署到tomcat时遇到的错误 错误: 但是WEB-INF \ lib中有javax.servlet-api-3.0.1.jar 问题答案: 信息:validateJarFile(D:\ Softwares \ tomcat \ apache-tomcat-7.0.50 \ webapps \ myWebApp_1 1 \ WEB-INF \ lib \ ja

  • 这个报告在jasper studio中包含了外部jar,当我在jasper中运行时,没有产生任何错误,但是如果我在laravel上编译它,它会生成错误填充ReportRerror加载scriptlet类。 我在jaspersoft中看到我external.jar只有class=external.jar这样的名称内的路径,我对.jasper文件进行了反向工程,没有关于jasperstarter或ph

  • 如何确认我的JAR文件已加载到Coldfusion中?我在CF10上。 我目前得到这个错误: 我的网站结构如下: 在我的申请中。cfc,我有以下代码: 这是我调用一切的代码: 更新#1 我在检查administor时发现了设置摘要,其中列出了服务器Java类路径。我添加了jar文件的位置并重新启动了服务器。即使路径存在于Administrator中的类路径中,我仍然会遇到相同的错误。 更新2 添加

  • 我第一次尝试使用JavaFx与Maven。通过这个主题:链接IntelliJ不能识别JavaFX 11与OpenJDK 11,我配置的项目。但是无论我做什么,我都不能加载fxml文件,因为"getClass(). getResources(path)"返回null。 我更改了路径,以“/”开头,没有,更改了包,创建了包,删除了包,更改了模块信息中的引用,但这不起作用。 结构:https://ibb