使用Jedis加载插件时发生错误-Minecraft服务器

问题描述 投票:0回答:1

只是想知道是什么原因造成的。我不知道!

我正在尝试制作队列插件。我正在用纸钉。请忽略我的插件代码中的所有漏洞,因为我现在只是对其进行测试。如果您有任何想法,我应该改变,但是我很乐意在此进行。这是终端发出的我的错误消息。

[19:29:52 ERROR]: Could not load 'plugins\anarchyqueuet3.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.loadPlugins(CraftServer.java:318) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:222) ~[patched_1.12.2.jar:git-Paper-1618]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:616) ~[patched_1.12.2.jar:git-Paper-1618]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]
Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis
        at com.Package.AnarchyQueue.<init>(AnarchyQueue.java:19) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_241]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_241]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:94) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[patched_1.12.2.jar:git-Paper-1618]
        ... 6 more
Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.Jedis
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_241]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:156) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:104) ~[patched_1.12.2.jar:git-Paper-1618]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241]
        at com.Package.AnarchyQueue.<init>(AnarchyQueue.java:19) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_241]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_241]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_241]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:94) ~[patched_1.12.2.jar:git-Paper-1618]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[patched_1.12.2.jar:git-Paper-1618]
        ... 6 more

这是我的代码:

package com.Package;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.logging.Logger;

public class AnarchyQueue extends JavaPlugin {
    //list of players in queue
    private ArrayList<Player> players = new ArrayList<Player>();
    //jedis object to communicate with other server
    private Jedis jedis = new Jedis("localhost");
    private int playerCount = 0;
    static int maxPlayerCount = 10;

    @Override
    public void onEnable() {
        onEnablePri();
    }

    @Override
    public void onDisable() {
        onDisablePri();
    }

    public void onPlayerJoin(PlayerJoinEvent event)
    {
        onPlayerJoinPri(event);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        onCommandPri(sender,command,label,args);
        return true;
    }

    //--------------------private methods--------------------

    private void onEnablePri() {
        log("Server test: "+jedis.ping(),1);
        BukkitScheduler scheduler = getServer().getScheduler();
        scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                runPri();
            }
        }, 0L, 10L);;
    }

    private void runPri() {
        try {
            playerCount=Integer.parseInt(jedis.get("anarchy-player-count"));
        } catch (Exception e) {
            log("Player count get failed",1);
        }
        if(playerCount<maxPlayerCount)
        {
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF("Connect");
            out.writeUTF("anarchy");
            players.get(0).sendPluginMessage(this, "BungeeCord", out.toByteArray());
            players.remove(0);
        }
    }

    private void onDisablePri() {
        //disable code
    }

    private void onPlayerJoinPri(PlayerJoinEvent event)
    {
        players.add(event.getPlayer());
    }

    private void onCommandPri(CommandSender sender, Command command, String label, String[] args) {
        if(command.getName().equalsIgnoreCase("setmaxplayercount"))
        {
            jedis.set("anarchy-player-count",args[0]);
        }
        /*if (command.getName().equalsIgnoreCase("players")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("You must be in game!");
            }
            else {
                getCount();
            }
        } */ 
    }

    //private void getCount() {   

    //}

    private void log(String str, int i)
    {
        if(i==0)
        {
            Logger.getLogger("Minecraft").info(str);
        }
        else
        {
            if(i!=1)
            {
                System.out.println("NUMBER NOT RECOGNISED: ");
            }
            System.out.println(str);
        }
    }   
}

最后是我的plugin.yml(以防万一这是错误的)

main: com.Package.AnarchyQueue
name: AnarchyQueue
version: '1.0'
description: The queue plugin for Ed_Silver's anarchy server.
load: postworld
author: Ed_Silver
prefix: AnarchyQueue
commands:
  setmaxplayercount:
   description: Sets max player count
   usage: /setmaxplayercount [int]

[我看到了一篇有关需要使用pom.xml添加依赖项的文章,但我不知道这是否适用于我。

谢谢,

如果您需要任何东西,请问,

爱德华

plugins loading minecraft jedis
1个回答
0
投票

您正在尝试import redis.clients.jedis.Jedis;,但Minecraft无法找到Jedis,您必须将Jedis添加到您的Maven或gradle项目中。

根据https://github.com/xetorthio/jedishttps://github.com/xetorthio/jedis#how-do-i-use-it

希望这有所帮助,我在这里回答您还有其他问题!

© www.soinside.com 2019 - 2024. All rights reserved.