【发布时间】:2010-09-07 01:47:59
【问题描述】:
当我通过.load() 调用jrxml 文件时,它会抛出异常FileNotfoundException。
我尝试过使用绝对路径,但它不起作用。请帮忙。
【问题讨论】:
-
提供失败的代码以及堆栈跟踪
标签: java jsp jasper-reports
当我通过.load() 调用jrxml 文件时,它会抛出异常FileNotfoundException。
我尝试过使用绝对路径,但它不起作用。请帮忙。
【问题讨论】:
标签: java jsp jasper-reports
FileNotFoundException 一般表示文件不存在。从您的代码中获取路径并将其粘贴到您的文件系统资源管理器中,然后查看它是否存在。
如果有,则表示由于某种原因无法访问:
当具有指定路径名的文件不存在时,FileInputStream、FileOutputStream 和 RandomAccessFile 构造函数将抛出此异常。如果文件确实存在但由于某种原因不可访问,例如当试图打开只读文件进行写入时,这些构造函数也会抛出它。
【讨论】:
您应该始终在 Java IO 中使用绝对路径。显然你尝试的那个是完全错误的。也许你只是根据 webapp 的部署位置猜到了。你不应该那样做。如果 jrxml 文件实际上位于 web 内容中,那么您可以使用 ServletContext#getRealPath() 将相对 web 路径转换为绝对磁盘文件系统路径,然后您可以在通常的 Java IO 内容中进一步使用。
假设file.jrxml 位于webcontent 根目录(例如http://example.com/contextname/file.jrxml 可访问),下面是一个示例:
String absolutePath = getServletContext().getRealPath("file.jrxml");
File file = new File(absolutePath);
【讨论】:
这取决于您如何为其提供对文件的引用。查看 JRXmlLoader http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/xml/JRXmlLoader.html 的文档 您可以看到您可以将它传递给 File 对象的引用。您可能只是传入一个字符串,这可能是错误的。
尝试类似 字符串路径 = "/tmp/test.jrmxl"; 文件 jrxmlFile = 新文件(路径); JasperDesign jasperDesign = JRXmlLoader.load(jrxmlFile); 使用适当的 try/catch 等,然后在担心加载程序之前先调试文件。
您可能应该获得一些 jasperreports 文档。这些书非常适合那些基本的东西。
【讨论】: