gpt4 book ai didi

JAVA - : com/lowagie/textDocumentException 中奇怪的 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-02 00:52:58 25 4
gpt4 key购买 nike

情况就是这样。我需要将 PDF 生成添加到已经具有 PNG 生成功能的程序中。最初涉及的 2 个类是:ActionUsuels 从这里调用 CaptureImage3D 的构造函数。

当我添加 PDF 生成时,我在 CaptureImage3D 类中添加了一个方法。在添加 PDF 生成之前,PNG 生成工作正常。但现在当我尝试生成 PNG 时,我得到一个: NoClassDefFoundError: com/lowagie/text/DocumentException

我知道这意味着类:DocumentException(来自itext jar)无法从类路径中读取,但是:

  1. 永远不会调用 PDF 生成方法。
  2. 异常是在进入CaptureImage3D的构造函数之前生成的。
  3. 考虑以下 PDF 生成方法:

代码:

  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 block 时,一切正常!!!

我再说一遍:captureImagePDF 从未被调用。甚至CaptureImage3D的构造函数也从未被访问过。 (应该是,但是之前已经引发了异常)。是的,我的类路径中有 itext。

我觉得很奇怪的是,一段从未在任何地方调用的代码会导致异常的出现!

不要犹豫,要求澄清!

有什么想法吗?

谢谢

最佳答案

捕获 DocumentException 的事实意味着加载器必须加载该类,以便系统可以捕获它。 :-)

如果您想避免在类路径中包含 iText jar,请捕获更高层的内容,或者(就像您所说的)根本不捕获。 :-P

关于JAVA - : com/lowagie/textDocumentException 中奇怪的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com