为什么我从我的代码中得到这个 NoClassDefFoundError?

Why am I getting this NoClassDefFoundError from my code?

我一直在尝试在我的代码中使用 Jar 文件作为库,它编译得很好。但是,在运行时,我不断收到 NoClassDefFoundError 消息。为什么会这样?我已经在编译路径和运行时路径中包含了 Jar 文件。

错误信息如下:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.apache.pdfbox.cos.COSDocument.(COSDocument.java:51) at org.apache.pdfbox.pdmodel.PDDocument.(PDDocument.java:136) at processing.PDFToJPG.main(PDFToJPG.java:58)

Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 3 more

这是我的代码:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public static void main(String[] args) {
    try {
        PDDocument doc = new PDDocument();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我正在使用 NetBeans IDE 以及 Windows 10

这是我对编译类路径的设置:

[

这是我对运行时类路径的设置:

[

编辑:感谢您的帮助,它确实有效。我需要做的就是下载依赖项 Jar 文件,而不是像我一直尝试做的那样编辑类路径

我认为除了您已经包含的罐子之外,您还需要另一个罐子。尝试添加 common-logging 1.4. Apparently, there is a dependency between pdfbox1.8.jar and this jar as stated on their site

编辑:还有更多依赖项 fontbox 和 jempbox 需要考虑。

EDIT2:我制作了一个包含所有需要的依赖项的 zip,您可以下载它 here

我同意 Aurelien 的 post:您似乎缺少 Apache Commons Logging - 以及其他运行时依赖项。

您可能需要考虑将项目创建为 'Maven' 项目(Netbeans 非常支持 Maven):然后添加 'pdfbox' 作为 'dependency';这应该会让你的生活更轻松 - 因为 Maven 将获取任何其他所需的依赖项。

您可以从这里获取各种 PDFBox 版本的 'Maven Coordinates':

http://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox

如果您想将最终项目构建到包含所有依赖项的单个 JAR 中;或为它们创建一个单独的 'lib' 目录:您必须对 Maven 项目文件 ('pom.xml') 进行一些小的更改才能执行此操作。

这个 Whosebug Post 有一个这样做的例子。