错误java.lang.NoSuchMethodError:org.jfree.text.TextBlock.setLineAlignment(Lorg/jfree/ui/HorizontalAlignment;)
我在从mysql表获取数据中编写代码,并为该值创建图表,然后将该图表插入pdf并存储。但我犯了个错误。获取sql数据并创建pdf,但未打开,java给出错误。 我使用jfreechart-1.0.18、itextpdf-5.5.2和jcommonjar文件。我的java代码是错误java.lang.NoSuchMethodError:org.jfree.text.TextBlock.setLineAlignment(Lorg/jfree/ui/HorizontalAlignment;),java,pdf,charts,itext,jfreechart,Java,Pdf,Charts,Itext,Jfreechart,我在从mysql表获取数据中编写代码,并为该值创建图表,然后将该图表插入pdf并存储。但我犯了个错误。获取sql数据并创建pdf,但未打开,java给出错误。 我使用jfreechart-1.0.18、itextpdf-5.5.2和jcommonjar文件。我的java代码是 public static void main(String args[]) throws SQLException { System.out.println("Enter No"); Scanner sc
public static void main(String args[]) throws SQLException {
System.out.println("Enter No");
Scanner sc = new Scanner(System.in);
String no = sc.next();
writeChartToPDF(createChart(no), 550, 400, "test.pdf");
}
public static JFreeChart createChart(String no) throws SQLException {
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
master ms = new master();
String c1 = null, c2 = null, c3 = null, c4 = null;
ms.conn();
ResultSet rs;
PreparedStatement ps;
ps = ms.con.prepareStatement("SELECT c1,c2,c3,c4 FROM chart where id=?");
ps.setString(1, no);
rs = ps.executeQuery();
if (rs.next()) {
c1 = rs.getString(1);
c2 = rs.getString(2);
c3 = rs.getString(3);
c4 = rs.getString(4);
}
System.out.println(c1 + c2 + c3 + c4);
dataSet.setValue(Integer.parseInt(c1), "test", "Test");
dataSet.setValue(Integer.parseInt(c2), "test", "Test");
dataSet.setValue(Integer.parseInt(c3), "test", "Test");
dataSet.setValue(Integer.parseInt(c4), "test", "Test");
dataSet.setValue(Integer.parseInt(c1), "test1", "Test");
dataSet.setValue(Integer.parseInt(c2), "test1", "Test");
dataSet.setValue(Integer.parseInt(c3), "test1", "Test");
dataSet.setValue(Integer.parseInt(c4), "test1", "Test");
JFreeChart chart = ChartFactory.createBarChart(
"Test", "Test", "Test",
dataSet, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot plot = chart.getCategoryPlot();
BarRenderer barRenderer = (BarRenderer) plot.getRenderer();
barRenderer.setSeriesPaint(0, Color.RED);
return chart;
}
public static void writeChartToPDF(JFreeChart chart, int width, int height, String fileName) {
PdfWriter writer = null;
Document document = new Document();
try {
writer = PdfWriter.getInstance(document, new FileOutputStream(
fileName));
document.open();
document.addCreator("Test");
document.addSubject("Data Report");
document.addCreationDate();
document.addTitle("Please Read it");
PdfContentByte contentByte = writer.getDirectContent();
PdfTemplate template = contentByte.createTemplate(width, height);
Graphics2D graphics2d = template.createGraphics(width, height,
new DefaultFontMapper());
Rectangle2D rect = new Rectangle2D.Double(0, 0, width,
height);
chart.draw(graphics2d, rect);
graphics2d.dispose();
contentByte.addTemplate(template, 0, 0);
} catch (Exception e) {
e.printStackTrace();
}
document.close();
}
}您使用的JCommon版本是什么?看起来您的版本太旧。NoSuchMethod错误通常表示您使用的依赖项版本不兼容。如果没有具有不同版本的相同库,请检查clashpath,然后尝试删除一个库,然后重试,然后在部署应用程序时更正配置,只保留好的配置。谢谢,我更改了Jcommon并立即重新启动了服务器。可能存在重复的