#java #itext #noclassdeffounderror
Вопрос:
Я получаю этот NoClassDefFoundError, когда пытаюсь создать pdf-файл с помощью iText. Мой код (это тот же код, что и с сайта.):
String input = "C:\input.jpg";
String output = "output.pdf";
PdfWriter pdfWriter;
try {
pdfWriter = new PdfWriter(output);
PdfDocument pdfDoc = new PdfDocument(pdfWriter);
Document doc = new Document(pdfDoc);
ImageData data = ImageDataFactory.create(input);
Image image = new Image(data);
doc.add(image);
doc.close();
} catch (FileNotFoundException | MalformedURLException e1) {
e1.printStackTrace();
}
Код ошибки:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at com.itextpdf.kernel.pdf.PdfCatalog.<clinit>(PdfCatalog.java:73)
at com.itextpdf.kernel.pdf.PdfDocument.open(PdfDocument.java:1963)
at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:285)
at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:266)
at Test.f(Test.java:127)
at Test.run(Test.java:34)
at Main.main(Main.java:47)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 7 more
Комментарии:
1. Это типичная проблема, с которой я столкнулся. Если вы используете maven/gradle, убедитесь, что для любых зависимостей требуется только одна версия itext. Возможно, ваша ожидаемая версия была переопределена требованием транзитивной зависимости.
2. Вы используете maven? Если это так, попробуйте запустить: mvn зависимость:дерево и посмотрите на список, чтобы увидеть, включает ли он необходимые зависимости iText. Если нет, добавьте их в свой pom.xml.