【问题标题】:Why am I getting this NoClassDefFoundError from my code?为什么我会从我的代码中得到这个 NoClassDefFoundError?
【发布时间】:2015-12-16 20:24:40
【问题描述】:

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

这是错误信息:

线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/logging/LogFactory 在 org.apache.pdfbox.cos.COSDocument.(COSDocument.java:51) 在 org.apache.pdfbox.pdmodel.PDDocument.(PDDocument.java:136) 在处理.PDFToJPG.main(PDFToJPG.java:58)

原因:java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 3 更多

这是我的代码:

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 文件,而不是像我一直在尝试做的那样编辑类路径

【问题讨论】:

  • 我看了很多文章,都是关于类路径的。原来我不知道 PDFbox 和 common-logging 之间存在依赖关系
  • 您的 PDFBox 版本已过时。 1.8.10 是当前版本。 (或者 2.0 RC2,如果你是一个非常酷的人)

标签: noclassdeffounderror


【解决方案1】:

我认为除了已经包含的罐子之外,您还需要另一个罐子。尝试添加common-logging 1.4。显然,如site 所述,pdfbox1.8.jar 和这个 jar 之间存在依赖关系。

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

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

【讨论】:

  • 谢谢,真的很有帮助
  • @Le Hoang Long - 如果我的回答有帮助,您能接受吗?
  • 完成。抱歉,我不知道这个。
【解决方案2】:

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

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

您可以从此处获取各种 PDFBox 版本的“Maven 坐标”:

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

如果你想将你的最终项目构建成一个包含所有 deps 的 JAR;或者为它们创建一个单独的“lib”目录:您必须对 Maven 项目文件(“pom.xml”)进行一些小的更改才能做到这一点。

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

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多