2012-06-20 41 views
0

我正在使用JFreeChart在我的Web应用程序中生成一些报告,我使用JFreechart构建图表并将其保存为图像,但我从未找到该图像在我的Tomcat目录中。无法在web应用程序中找到witten文件(tomcat,Spring MVC)

我试图打印工作目录,它给了我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" ; 
} 

回答

2

根(/)不指向Web应用程序的根路径,你需要得到一个“翻译路径”,通过使用ServletContext.getRealPath(),像

... new File(request.getServletContext().getRealPath("/chart.jpeg")) .... 
+0

它给了我同样的结果。 '@Autowired private ServletContext context;' 'String curSession = context.getRealPath(“/”);' – elaich

+0

我很难相信 - 你能发布使用getRealPath的代码吗? – fvu

+0

它就在上面。 – elaich

1

你扔掉你例外。改变它,要么不抓住它,要么至少记录它看看发生了什么。

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

相关问题