Это ситуация. Мне нужно добавить генерацию PDF в программу, которая уже имеет генерацию PNG. Изначально задействованы 2 класса:
ActionUsuels
Откуда вызывается конструктор CaptureImage3D
.
Когда я добавил поколение PDF, я добавил метод в классе CaptureImage3D
.
Перед добавлением генерации PDF, генерация PNG работала правильно. Но теперь, когда я пытаюсь выполнить генерацию PNG, я получаю: NoClassDefFoundError
: com/lowagie/text/DocumentException
.
Я знаю, это означает, что класс: DocumentException
(из файла itext jar) нельзя прочитать из пути к классам, но:
- Метод создания PDF НИКОГДА не вызывается.
- Исключение генерируется перед вводом конструктора
CaptureImage3D
.
- Рассмотрим следующий метод создания PDF:
Code:
public void captureImagePDF(File imageFile)
{
System.out.println("Pdf appelé");
// Dimension (en pixels) de l'image a sauvegarder dans le fichier
Dimension dim = new Dimension(512, 512);
// On recupere l'image (pixmap) rendue par le canvas 3D offscreen
BufferedImage myBufferedImage = offScreenCanvas.getOffScreenImage(dim);
// On recupere le contexte graphique de l'image finale de sortie
Graphics2D gc = myBufferedImage.createGraphics();
gc.drawImage(myBufferedImage, 0, 0, null);
Document myPDF = new Document(PageSize.A4, 50, 50, 50, 50);
PdfWriter myWriter = null;
try
{
myWriter = PdfWriter.getInstance(myPDF, new FileOutputStream(imageFile));
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (DocumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
myPDF.open();
PdfContentByte cb = myWriter.getDirectContent();
cb.saveState();
Image image = null;
try {
image = Image.getInstance(myBufferedImage,null);
}
catch (BadElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
cb.addImage(image);
}
catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Когда я комментирую все блоки try / catch, все работает отлично !!!
Я повторяю еще раз: captureImagePDF никогда не вызывается. И даже конструктор CaptureImage3D
никогда не доступен. (так и должно быть, но исключение поднималось раньше). И да, у меня есть itext в пути к классам.
Мне кажется странным тот факт, что фрагмент кода, который никогда нигде не вызывается, вызывает появление исключения!
Не стесняйтесь спрашивать разъяснений!
Есть идеи?
Спасибо