无法使用外部库运行java

无法使用外部库运行java,java,pdfbox,Java,Pdfbox,我看到了帖子,但我不清楚决议是什么 我正在尝试使用外部库从命令行运行java程序。以下是我的会话的总输出: grifter@host:~/java$ cat ExtractTest.java import java.io.IOException; import org.apache.pdfbox.util.PDFTextStripper; import org.apache.pdfbox.pdmodel.PDDocument; import java.io.File; public cla

我看到了帖子,但我不清楚决议是什么

我正在尝试使用外部库从命令行运行java程序。以下是我的会话的总输出:

grifter@host:~/java$ cat ExtractTest.java 

import java.io.IOException;
import org.apache.pdfbox.util.PDFTextStripper;
import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;

public class ExtractTest {

public static void main(String[] args) throws IOException {

    System.out.println("About to open PDF");
    File fh = new File("/home/grifter/test.pdf");
    PDDocument d = PDDocument.load(fh);
    System.out.println("Here");
    PDFTextStripper ts = new PDFTextStripper();
    System.out.println(ts.getText(d));

    }
}

grifter@host:~/java$ javac -cp .:/home/grifter/pdfbox-1.8.5/pdfbox/target/pdfbox-1.8.5.jar ExtractTest.java 
grifter@host:~/java$ java -classpath .:/home/grifter/pdfbox-1.8.5/pdfbox/target/pdfbox-1.8.5.jar ExtractTest
About to open PDF
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.apache.pdfbox.pdfparser.BaseParser.<clinit>(BaseParser.java:68)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1219)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1187)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1158)
    at ExtractTest.main(ExtractTest.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 5 more
grifter@host:~/java$cat ExtractTest.java
导入java.io.IOException;
导入org.apache.pdfbox.util.PDFTextStripper;
导入org.apache.pdfbox.pdmodel.PDDocument;
导入java.io.File;
公开课考试{
公共静态void main(字符串[]args)引发IOException{
System.out.println(“即将打开PDF”);
文件fh=新文件(“/home/grifter/test.pdf”);
PDDocument d=PDDocument.load(fh);
System.out.println(“此处”);
PDFTextStripper ts=新的PDFTextStripper();
System.out.println(ts.getText(d));
}
}
grifter@host:~/java$javac-cp.:/home/grifter/pdfbox-1.8.5/pdfbox/target/pdfbox-1.8.5.jar ExtractTest.java
grifter@host:~/java$java-classpath.:/home/grifter/pdfbox-1.8.5/pdfbox/target/pdfbox-1.8.5.jar-test
即将打开PDF
线程“main”java.lang.NoClassDefFoundError中出现异常:org/apache/commons/logging/LogFactory
位于org.apache.pdfbox.pdfparser.BaseParser(BaseParser.java:68)
位于org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1219)
位于org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1187)
位于org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1158)
在ExtractTest.main(ExtractTest.java:12)
原因:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 还有5个
有人能给我指一下正确的方向吗


非常感谢您的帮助。

您的类路径中缺少jar公共日志记录和依赖项


您可以下载它

pdf框使用依赖项,这也需要添加到类路径中。您可以阅读有关依赖关系的内容

此答案和上述内容帮助我解决了问题。解决方案:将所有依赖项添加到构建路径(包括apache commons日志)。上面的链接已失效。