这里的主要问题是您尚未编译文件。将JRXML文件视为Java源文件。要运行Java文件,您必须先对其进行编译,然后才能运行。jrxml文件只是人类可读的XML文件,它描述了您想要发生的事情。
要编译文件,请执行以下操作:
JasperCompileManager.compileReport("/home/abcd/report/R_D1.jrxml");这将返回您和的实例
JasperReport,该实例是已编译的文件。(通常将其写到.jasper文件中,因此您不必在每次运行时都编译报告,但这超出了此问题的范围)。一旦有了这个,就可以填写报告。
另外,不相关但值得一提的是,您应该在finally块中关闭数据库连接。与您当前的示例一样,它永远不会关闭,因为会引发异常。final块将确保即使在发生异常的情况下也将其关闭。
您的示例方法应如下所示:
public void generateReport() { Connection con try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sentiment","root", "abcd"); System.out.println("Compiling report..."); JasperReport jasperReport = JasperCompileManager.compileReport("/home/abcd/report/R_D1.jrxml"); System.out.println("Filling report..."); JasperFillManager.fillReportToFile(jasperReport,new HashMap<String, Object> (), con); System.out.println("Done!"); } catch (JRException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { if (con != null){ con.close(); } }}希望能有所帮助。祝好运。



