我正在使用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" ;
}
答案 0 :(得分:2)
Root(/
)未指向网络应用的根路径,您需要使用ServletContext.getRealPath()获取“翻译路径”,例如
... new File(request.getServletContext().getRealPath("/chart.jpeg")) ....
答案 1 :(得分:1)
你扔掉你的例外。将其更改为不捕获它,或者至少记录它以查看正在发生的情况。
我怀疑您在尝试写入该目录时遇到权限问题。