Jar-зависимость не может быть найдена во время выполнения - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь скомпилировать файл jar с помощью моей java программы, используя javac -cp dependency.jar *.java, а затем запустить его, используя java -cp dependency.jar mainPrgram Программа прекрасно компилируется, а также работает нормально, пока не будет выполнен вызов функции с использованием зависимости .

Исключение, которое я получаю, ниже

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson
        at DFS.readMetaData(DFS.java:250)
        at DFS.touch(DFS.java:111)
        at CommandLine.<init>(CommandLine.java:41)
        at CommandLine.main(CommandLine.java:132)
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 4 more

Пробовал различные решения от

Почему я получаю ошибку NoClassDefFoundError в Java?

Класс в jar не найден во время выполнения, но использовался для компиляции

Но ни один из них не работал

ОБНОВЛЕНИЕ: Код прекрасно работает в Eclipse, но не из командной строки

После запуска с eclipse .classpath имеет следующее:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
        <attributes>
            <attribute name="module" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" path=""/>
    <classpathentry kind="lib" path="C:/Users/MyPC/Documents/projects/MusicPlayer/gson-2.8.6.jar"/>
    <classpathentry kind="output" path=""/>
</classpath>

1 Ответ

0 голосов
/ 30 апреля 2020

Ваша программа успешно завершена против фляги. Но у самой банки есть зависимость, которая необходима для запуска. Вам необходимо добавить все зависимости в путь к классу, например java -cp dependency.jar:subdependency.jar Main.

...