微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在 Java/Gradle 中对单个包进行着色?

如何解决是否可以在 Java/Gradle 中对单个包进行着色?

你好 StackOverflow 社区,

我正在尝试在 minecraft (Spigot) 插件中运行 discord 机器人。每次我尝试这样做时,都会出现以下错误

[21:19:32] [Server thread/INFO]: [discordWhitelist] Loading discordWhitelist v1.0
[21:19:32] [Server thread/INFO]: [discordWhitelist] Enabling discordWhitelist v1.0
[21:19:32] [Server thread/ERROR]: Error occurred while enabling discordWhitelist v1.0 (Is it up to date?)
java.lang.NoClassDefFoundError: net/dv8tion/jda/api/JDABuilder
        at discordwhitelist.discordWhitelist.onEnable(discordWhitelist.java:20) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:492) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:406) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.reload(CraftServer.java:879) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.Bukkit.reload(Bukkit.java:651) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:761) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchServerCommand(CraftServer.java:746) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at net.minecraft.server.v1_16_R3.DedicatedServer.handleCommandQueue(DedicatedServer.java:426) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:395) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at net.minecraft.server.v1_16_R3.minecraftServer.a(minecraftServer.java:1127) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at net.minecraft.server.v1_16_R3.minecraftServer.w(minecraftServer.java:966) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at net.minecraft.server.v1_16_R3.minecraftServer.lambda$0(minecraftServer.java:273) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at java.lang.Thread.run(UnkNown Source) [?:1.8.0_291]
Caused by: java.lang.classNotFoundException: net.dv8tion.jda.api.JDABuilder
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:138) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:99) ~[spigot.jar:3082-Spigot-9fb885e-d49530f]
        at java.lang.classLoader.loadClass(UnkNown Source) ~[?:1.8.0_291]
        ... 18 more

错误似乎表明在构建 .jar 文件时未加载包 JDA。 解决此问题的一种方法是使用 ShadowJar 创建一个胖 .jar 文件。不幸的是,这并不理想,因为 .jar 的最终大小。使用 ShadowJar,插件最终将达到 7000+KB,大大超过了大多数 minecraft 插件共享站点的最大文件大小。

所以,简而言之,我需要找到一种方法来仅对部分包裹进行遮蔽。

我一直无法弄清楚如何使用搜索来做到这一点,所以我希望这篇文章能找到合适的人。

作为参考,我使用的是最新版本的 IntelliJ。我正在使用 Gradle 制作插件。这是代码(到目前为止)和 build.gradle 文件

package discordwhitelist;
import org.bukkit.plugin.java.JavaPlugin;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import javax.security.auth.login.LoginException;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
public class discordWhitelist extends JavaPlugin {
    String statusMessage = "im a dumb bot";
    String token = "REDACTED";
    @Override
    public void onEnable() {
        try { //runs bot
            JDA jda = new JDABuilder(token)
                    .addEventListeners(new discordHandlers())
                    .setActivity(Activity.playing(statusMessage))
                    .build();
            jda.awaitReady();
            System.out.println("Finished Building JDA!");
        } catch (LoginException e) {
            e.printstacktrace();
        } catch (InterruptedException e) {
            e.printstacktrace();
        }
    }
    @Override
    public void ondisable() {
    }
}
plugins {
    id 'java'
}
group 'wickn.discordwhitelist'
version '2.0'
repositories {
    mavenCentral()
    maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
    maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
    mavenCentral() // for transitive dependencies
    maven {
        name 'm2-dv8tion'
        url 'https://m2.dv8tion.net/releases'
    }
}
dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
    compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'
    compile ('net.dv8tion:JDA:4.2.1_265')
}
test {
    useJUnitPlatform()
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。