运行程序时,从命令行包含 jar 文件会导致 java.lang.NoClassDefFoundError

问题描述

我正在尝试编写一个使用 iText7 从 pdf 文件中读取的 java 程序。
IText7 是几个 jar 文件的集合。我的程序(create_PDF.java)使用 3 个类 - kernel.jar 中的 PdfWriter.class 和 PdfDocument.class 以及 layout.jar 中的 Document.class。
我的操作系统是 Mageia,我没有使用 KDE 并从命令行运行程序。

我的文件夹结构如下:
some_folder/iText7/(所有的jar文件)
some_folder/create_PDF.java

我正在使用的程序是这样的:https://www.tutorialspoint.com/itext/itext_creating_pdf_document.htm

我使用以下命令从命令行编译程序:
javac -cp iText7/kernel-7.1.15.jar:iText7/layout-7.1.15.jar:iText7/io-7.1.15.jar:. create_PDF.java
(需要io-jar)

程序编译没有问题。但是,当我尝试使用以下命令运行程序时:
java -cp iText7/kernel-7.1.15.jar:iText7/layout-7.1.15.jar:iText7/io-7.1.15.jar:.创建_PDF

我收到了由 java.lang.classNotFoundException 引起的 java.lang.NoClassDefFoundError。到目前为止,这很有趣,因为程序 确实 找到了 PdfWriter.class 而不是 PdfDocument.class,即使它们都在 kernel.jar 中(它创建了 pdf 文件但无法添加任何东西)。我也试过编译和运行程序,包括所有的 jar 文件,但这不会改变任何东西。
我的问题是这是我第一次尝试添加 jar 文件,并且大多数教程都专注于使用 KDE。如果有人有答案或知道可能对我有帮助的教程,我将不胜感激。谢谢

编辑添加错误消息:
线程“main”中的异常 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
在 com.itextpdf.kernel.pdf.PdfCatalog.(PdfCatalog.java:73)
在 com.itextpdf.kernel.pdf.PdfDocument.open(PdfDocument.java:1963)
在 com.itextpdf.kernel.pdf.PdfDocument.(PdfDocument.java:285)
在 com.itextpdf.kernel.pdf.PdfDocument.(PdfDocument.java:266)
在 Create_PDF.main(Create_PDF.java:14)
引起:java.lang.classNotFoundException:org.slf4j.LoggerFactory
在 java.net.urlclassloader.findClass(urlclassloader.java:382)
java.lang.classLoader.loadClass(ClassLoader.java:418)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
java.lang.classLoader.loadClass(ClassLoader.java:351)
... 5个

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)