【发布时间】:2014-06-10 16:57:23
【问题描述】:
我有一个 java jar 文件,在 ubuntu 终端中执行时出现以下错误。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/pdfbox/pdmodel/PDDocument
at com.example.pdfbox.pdfbox.main(pdfbox.java:41)
Caused by: java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.PDDocument
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)
... 1 more
我的代码是这样的:
package com.example.pdfbox;
import java.io.BufferedWriter;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.util.PDFTextStripper;
public class pdfbox {
public static void main(String[] args) {
PDDocument pd;
BufferedWriter wr;
String kunde = args[0];
String sted = args[1];
String plassering = args[2];
try {
File input = new File("/home/processdrive/Desktop/SKI108RE.PDF");
pd = PDDocument.load(input);// line number 41
System.out.println(pd.getNumberOfPages());
System.out.println(pd.isEncrypted());
PDDocumentCatalog catalog = pd.getDocumentCatalog();
PDAcroForm form = catalog.getAcroForm();
form.getField("Kunde").setValue(kunde);
form.getField("Sted").setValue(sted);
form.getField("Plassering").setValue(plassering);
pd.save("/home/processdrive/Desktop/CopyOfInvoice.pdf");
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage(1);
stripper.setEndPage(1);
} catch (Exception e){
e.printStackTrace();
System.out.println("Error occured");
}
}
}
第41行是
pd = PDDocument.load(input);
我的课程路径是这样的
<classpath><classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry exported="true" kind="lib" path="/home/processdrive/Desktop/pdfbox/pdfbox-1.8.4.jar"/>
<classpathentry exported="true" kind="lib" path="/home/processdrive/Desktop/pdfbox/commons-logging-1.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="/home/processdrive/Desktop/pdfbox/fontbox-1.8.4.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
【问题讨论】:
-
那么,您如何尝试 使 pdfbox jar 文件可用于您的程序?您的清单中有 Class-Path 条目吗?
-
您是否已将所需的
jar文件添加到您的类路径中? -
@sankrish 查看我的课程路径
-
@JonSkeet jar 文件是从 eclipse 中导出的..
-
@Ela:您在 Eclipse 中的类路径无关紧要 - 您应该查看 jar 文件中的条目。我不知道 Eclipse 对添加 Class-Path 清单条目做了什么。
标签: java jar classpath manifest pdfbox