gpt4 book ai didi

java - 无法通过 JRXmlLoader 加载位于 jar 文件中的 jrxml : getting java. io.FileNotFoundException

转载 作者:行者123 更新时间:2023-12-02 10:43:46 26 4
gpt4 key购买 nike

我正在我的 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.jrxml >报告目录...

如果我正确地阅读了你的问题,这不是你想要的

相反,请尝试将报告作为资源加载(假设您声明它位于内)

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

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

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

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

关于java - 无法通过 JRXmlLoader 加载位于 jar 文件中的 jrxml : getting java. io.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com