NoClassDefFoundError: ... вызвано ClassNotFoundException - PullRequest
1 голос
/ 15 мая 2019

У меня есть простой код, написанный другой группой людей (в настоящее время недоступен), который ссылается на некоторые файлы JAR, которые мне дали.Когда я компилирую код, все строится нормально, но как только код пытается создать экземпляр класса, определенного в одном из файлов jar, я получаю java.lang.NoClassDefFoundError.Я провел значительное количество исследований этой проблемы, и все указывало на проблему с моим classpath во время выполнения.Однако, когда я печатаю classpath во время выполнения, я вижу все файлы jar, и они, кажется, имеют правильный путь.Путь к классам времени выполнения также, кажется, соответствует пути к классам времени компиляции, так что это не проблема.

Я должен упомянуть одну вещь: я использую JDK 1.8, хотя я считаю, что эти файлы JAR были созданы с использованием JDK 1.7.Ни одно из других решений, которые я видел, не упоминало об этом, но есть ли вероятность, что это проблема совместимости версий?Мне не удалось получить JDK 1.7 с помощью утвержденного метода, но если я смогу убедительно доказать, что это решит мою проблему, возможно, я смогу получить более старую версию, одобренную для установки.

Если это невозможновозможно проблема с версией, куда мне идти отсюда?Кажется, что каждый ответ, который я нашел, не относится к моей ситуации, но если вы можете указать на тот, который я, возможно, пропустил или у меня есть решение, я был бы очень признателен.Ответы, специфичные для NetBeans, полезны, но не обязательны.Спасибо!

РЕДАКТИРОВАТЬ: Для справки, вот код, который я использую для печати пути к классам во время выполнения:

    ClassLoader cl = ClassLoader.getSystemClassLoader();

    URL[] urls = ((URLClassLoader)cl).getURLs();

    for(URL url: urls){
        System.out.println(url.getFile());
    }

1 Ответ

0 голосов
/ 15 мая 2019

Пожалуйста, убедитесь, что ваше время компиляции и код времени выполнения использовали одну и ту же версию файлов JAR. Если существует конфликт версий файла JAR, вы можете столкнуться с вышеуказанной проблемой

...