【发布时间】:2021-11-16 15:33:33
【问题描述】:
我正在尝试运行一个简单的 java 程序。
├── README.md
├── bin
│ └── myapp
│ └── myapp.class
├── build-jar
├── lib
│ ├── pdfbox-app-2.0.24.jar
├── manifest.txt
├── myapp.jar
└── src
└── myapp
└── myapp.java
然后我编译了我的 java 类
javac -cp src/ src/myapp/*.java -d bin
javac -cp lib/pdfbox-app-2.0.24.jar src/myapp/*.java -d bin
jar -cvfm myapp.jar manifest.txt -C bin/ . src
但是当我运行我的 java 文件时
java -jar myapp.jar
我收到一个异常,说找不到我的班级。但是,我在做 javac 时已经包含了它。所以我有点好奇出了什么问题?我正在使用 VS 代码。
Caused by: java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.PDDocument
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
但是,当我运行 java 类时,它可以正常工作。我的代码附在此处
package myapp;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.PDFTextStripperByArea;
public class myapp {
public static String read_file(String fileName) throws IOException{
String pdfFileInText ="";
try (PDDocument document = PDDocument.load(new File(fileName))) {
document.getClass();
if (!document.isEncrypted()) {
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
PDFTextStripper tStripper = new PDFTextStripper();
pdfFileInText = tStripper.getText(document);
//System.out.println("Text:" + st);
// split by whitespace
String lines[] = pdfFileInText.split("\\r?\\n");
for (String line : lines) {
//System.out.println(line);
}
}
} catch (Exception e){
System.out.println("Error");
}
return pdfFileInText;
}
public static void main(String[] args) throws Exception {
String return_text = read_file("xxx.pdf");
System.out.println(return_text);
System.out.println("Hello, Test!");
}
}
【问题讨论】: