NoClassDefFoundError в Eclipse во время выполнения при загрузке зависимости через Gradle (но работает при использовании файла Jar) - PullRequest
0 голосов
/ 30 октября 2019

У меня есть build.gradle с некоторыми зависимостями. Одной из зависимостей является ведение журнала общих Apache

dependencies {
    ...
    compile 'commons-logging:commons-logging:1.2'
}

Я использую mavenCrentral для разрешения большинства зависимостей. Однако некоторые библиотеки сохраняются в виде файлов jar в каталоге моей файловой системы. Я говорю gradle, где найти эти библиотеки:

repositories {
    mavenCentral()
    flatDir {
        dirs "${rootProject.projectDir}/libs"
    }
}

Когда я помещаю файл commons-logging-1.2.jar в папку libs, я вижу этот путь для jar в своем "Project and External"Зависимости "в Eclipse, тогда все работает нормально.

Однако, когда я удаляю этот jar из папки libs, такой, что gradle загружает его из mavenCentral и сохраняет его в" ... /. Gradle / caches /. .. ", тогда я получаю

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

при запуске проекта.

jar, загруженный gradle из maven central, и тот, который у меня есть в моей локальной папке lib, идентичны (онииметь одинаковую контрольную сумму MD5). В Eclipse я вижу файл jar в разделе «Project and External Dependencies» в обоих случаях. Таким образом, банка, кажется, на пути к классам. Единственная разница - путь к файлу jar. Это либо "... / my-project / libs / ...", либо "... /. Gradle / caches /...".

Почему эти зависимости не эквивалентны? Это проблема с Eclipse, Gradle или моими настройками?

...