Ошибка: не удалось найти или загрузить основной класс в Jar - PullRequest
0 голосов
/ 03 марта 2020

Я создаю FatJar с Gradle, но если я его выполняю, я получаю сообщение об ошибке: «Не удается найти или загрузить основной класс de.fabipfolix.OlixBotMain»

Но оно должно быть там, пакет и имя Главный класс прав. Я переименовал (реорганизовал) его один раз, но даже если я изменил его обратно, он не работал.

Gradle:

plugins {
id 'java'
}

group 'de.fabipfolix'
version '1.0'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    testImplementation group: 'junit', name: 'junit', version: '4.12'
    implementation 'net.dv8tion:JDA:4.1.1_109'
    implementation 'com.jagrosh:jda-utilities:3.0.2'
    implementation group: 'org.xerial', name: 'sqlite-jdbc', version: '3.30.1'
    implementation group: 'com.sedmelluq', name: 'lavaplayer', version: '1.3.34'
}

task createFatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'de.fabipfolix.OlixBotMain'
    }
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

Кто-нибудь знает, в чем проблема?

1 Ответ

1 голос
/ 04 марта 2020

Примеры создания «толстых» банок вы можете найти в руководстве пользователя Gradle . В частности, вы собираете зависимости от конфигурации compile, которая устарела и также не используется в вашем проекте (вы делаете это правильно с более новой конфигурацией implementation). Но в любом случае вы должны собирать зависимости времени выполнения, а также скомпилированные классы. Вам также необходимо зависеть от конфигурации, чтобы ее разрешить.

Вот как они это делают в руководстве пользователя:

task uberJar(type: Jar) {
    archiveClassifier = 'uber'

    from sourceSets.main.output

    dependsOn configurations.runtimeClasspath
    from {
        configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) }
    }
}

В качестве альтернативы вы можете использовать Shadow плагин , который делает все это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...