随着 JDA 4.2.0 的新更新,新构建的 JAR 文件在 VPS returns NoClassDefFoundError

With the new update of JDA 4.2.0 the new built JAR file on the VPS returns NoClassDefFoundError

随着 JDA 4.2.0 的新更新,尝试 运行 VPS 上的 jar 文件失败。 我尝试了各种选择,例如

然而 none 这些选项似乎有效,因为 VPS 控制台输出保持不变:

Error: Could not find or load main class ...
Caused by: java.lang.NoClassDefFoundError: net/dv8tion/jda/api/hooks/ListenerAdapter

所以我现在的问题是,我的 gradle.build 应该是什么样子,或者这是 VPS 没有正确刷新的问题?或者可能是另一个我不知道的问题。

至于我的gradle.build长什么样:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1'
    }
}

apply plugin: 'java'
apply plugin: 'com.github.johnrengelman.shadow'

group '...'
version '2.0-SNAPSHOT'

repositories {
    mavenCentral()
    jcenter(
    )
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.+'
    compile 'net.dv8tion:JDA:4.2.0_168'
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.20'
    compile group: 'javax.persistence', name: 'persistence-api', version: '1.0'
    compile 'com.vdurmont:emoji-java:5.1.1'
}

jar {
    manifest {
        attributes(
                'Main-Class': '...'
        )
    }
}

注意:在 1.0-SNAPSHOT 的前一个快照中,以下 gradle.build 用于启动项目:

plugins {
    id 'java'
    id 'application'
}

group '...'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.+'
    compile 'net.dv8tion:JDA:3.5.0_329'
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.20'
    compile group: 'javax.persistence', name: 'persistence-api', version: '1.0'
    compile 'com.vdurmont:emoji-java:5.1.1'
}

您可以使用这个 build.gradle 构建一个工作影子罐:

plugins {
  id 'application' // this allows you to set a mainClassName
  id 'com.github.johnrengelman.shadow' version '6.0.0' // this adds the shadowJar task
}

group '...'
version '2.0-SNAPSHOT'
mainClassName = 'your main class goes here' // this sets the main class property in your manifest automatically

repositories {
    jcenter() // jcenter is a superset of mavenCentral
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.+'
    compile 'net.dv8tion:JDA:4.2.0_191'
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.20'
    compile group: 'javax.persistence', name: 'persistence-api', version: '1.0'
    compile 'com.vdurmont:emoji-java:5.1.1'
}

运行 shadowJar gradle 任务来编译你的 jar 文件。然后将其放置在 build/libs 内,格式为 [name]-all.jar。不要忘记将 mainClassName 替换为您的主 class.

的完全限定名称