Почему я получаю Noclassdeffounderror для класса .jar, включенного в -classpath? - PullRequest
0 голосов
/ 05 августа 2020

Я искал ответ повсюду, и самое близкое к моей проблеме это ответ, который не работает для меня и не объясняет, что я делаю неправильно.

Меня не интересует установка и знакомство с IDE, я просто хочу написать простую однофайловую программу java, и мне удобно работать с командной строкой. Обратите внимание, что я не очень много знаю о Java, поэтому, пожалуйста, извините меня, если я пропущу Java условных обозначений! (Я приму совет)

Мой код пока довольно прост:

/* MyTest.java */

import java.io.File;
import java.io.Exception;

import org.apache.pdfbox.pdmodel.PDDocument;

public class MyTest {
    public static void main(String[] args) throws IOException {
        File file = new File("[pathtopdf]");
        PDFDocument document = PDDocument.load(file);
        System.out.println("Successfully loaded the PDF");
    }
}

Я знаю, что мне нужен LogFactory Apache с PDFBox, но мой код не уже достаточно далеко, чтобы потерпеть неудачу в этой точке.

Вот моя строка компиляции и связанный с ней вывод:

$ javac -g -Xlint:all -classpath lib/pdfbox-2.0.20.jar:. MyTest.java
$ java MyTest
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/pdfbox/pdmodel/PDDocument
        at MyTest.main(MyTest.java:11)
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:522)
        ... 1 more

Если я извлечу файл jar и переместу папку org/ в root, он запускает , но -classpath должен позаботиться об этом за меня. Правильно? Что мне не хватает?

...