0

我正在使用 JFreeChart 在我的 Web 应用程序中生成一些报告,我使用 JFreechart 构建图表并将其保存为图像,但我从未在我的 Tomcat 目录中找到该图像。

我试图打印工作目录,它给了我 Tomcat 根目录,所以我想知道为什么图像从未写入该目录。

这是我的服务方法:

public DefaultPieDataset generateChartEquipementsByDepartementDataset(){
    DefaultPieDataset pieDataset ;
    pieDataset = convertMapToDataset(reportsDao.getEquipementsByDepartementDataset()) ;
    JFreeChart chart = ChartFactory.createPieChart(
            "% Equipements par departement",
            pieDataset,
            true,
            true,
            false
            ) ;
    try{
    ChartUtilities.saveChartAsJPEG(new File("/chart.jpeg"), chart, 400, 400) ;
    }catch(Exception ex){}

    return pieDataset ;
}

当我测试它时,它会在我的应用程序的根目录中写入图像,但从不在 tomcat 中。这里是控制器。

@RequestMapping(value="/reports")
public String reportsHandler( Model model ) {
    reportingService.generateChartEquipementsByDepartementDataset() ;
    String curSession = System.getProperty("user.dir") ;
    model.addAttribute("curSession", curSession) ;
    return "home" ;
}
4

2 回答 2

2

Root ( /) 不指向 Web 应用程序的根路径,您需要使用ServletContext.getRealPath()获取“翻译路径” ,例如

... new File(request.getServletContext().getRealPath("/chart.jpeg")) ....
于 2012-06-20T22:58:12.147 回答
1

你扔掉你的例外。将其更改为不捕获它,或者至少记录它以查看发生了什么。

我怀疑您在尝试写入该目录时遇到权限问题。

于 2012-06-20T23:44:31.890 回答