@stepkakovalyov
Редкостный ретард.

Как учитывать зависимости при сборке jar файла?

Есть некоторый проект на жаве с таким вот build.gradle:
plugins {
    id 'java'
    id 'application'
    id 'com.github.johnrengelman.shadow' version '2.0.1'
}
mainClassName = "Main"
group 'org.q'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'net.dv8tion', name: 'JDA', version: '4.1.1_121'
    compile group: 'org.mongodb', name: 'mongodb-driver-sync', version: '3.12.2'
    compile group: 'org.atteo.classindex', name: 'classindex', version: '3.4'
    annotationProcessor group: 'org.atteo.classindex', name: 'classindex', version: '3.4'
}

jar {
    manifest {
        attributes 'Main-Class': 'discordbot.Main'
    }
}

compileJava.options.encoding = 'UTF-8'


При попытке собрать проект в jar вызовом "gradle jar" искомый файл успешно создаётся, но при попытке его выполнения(java -jar "path/file.jar") вылезает следующее:
Exception in thread "main" java.lang.NoClassDefFoundError: net/dv8tion/jda/api/JDABuilder
        at discordbot.Main.main(Main.java:17)
Caused by: java.lang.ClassNotFoundException: net.dv8tion.jda.api.JDABuilder
        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)
        ... 1 more

Логично предположить, что файл собирается без зависимостей, отсюда вопрос: как настроить gradle, чтобы он либо запихивал все зависимые либы в jar, либо клал их рядом в виде jar'ников и прописывал пути к классам?
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Кажется, чего-то не хватает.
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'java'


https://imperceptiblethoughts.com/shadow/getting-s...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы