簡體   English   中英

錯誤“java.lang.IllegalArgumentException:插件已初始化!” 成立

[英]Error 'java.lang.IllegalArgumentException: Plugin already initialized!' found

我正在嘗試使用一個簡單的套接字服務器來接收一些命令(bukkit api)。 通過線程,插件可以接收命令並將其發送到主服務器,以便我可以控制服務器。 但是當我嘗試使用一個使用線程來解決問題時,發生了錯誤:

代碼:

package tiance.auroracore;

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import tiance.auroracore.metrics.Metrics;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public final class AuroraCore extends JavaPlugin {

    private int port;// 默認服務器端口
    private String AcceptCommand;

    public AuroraCore() {
         this.port=9028;
         this.AcceptCommand=new String();
    }

    // 創建指定端口的服務器
    public AuroraCore(int port) {//構造方法
        this.port = port;//將方法參數賦值給類參數
        this.AcceptCommand=new String();
    }

    // 提供服務
    public void service() {//創建service方法
        ServerSocket server;
        try {
            server = new ServerSocket(port);//創建  ServerSocket類

        }
        catch (IOException e) {
            System.out.println("Error! Cannot start the server! Is the port already used?");
            return;
        }
        while (true) {
            try {// 建立服務器連接
                Socket socket = server.accept();// 等待客戶連接
                try {
                    DataInputStream in = new DataInputStream(socket
                            .getInputStream());// 讀取客戶端傳過來信息的DataInputStream
                    DataOutputStream out = new DataOutputStream(socket
                            .getOutputStream());// 向客戶端發送信息的DataOutputStream
                    while (true) {
                        String accept = in.readUTF();// 讀取來自客戶端的信息
                        AcceptCommand = accept;
                        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), AcceptCommand);
                    }
                } finally {// 建立連接失敗的話不會執行socket.close();
                    socket.close();//關閉連接
                    server.close();//關閉
                }
            } catch (IOException e) {//捕獲異常
                e.printStackTrace();
            }
        }
    }

    @Override
    public void onEnable() {

        new BukkitRunnable(){
            public void run(){
                new AuroraCore().service();//調用service方法
            }
        }.runTaskAsynchronously(this);

        int pluginId = 13929;
        Metrics metrics = new Metrics(this, pluginId);
        saveDefaultConfig();

    }

    @Override
    public void onDisable() {

    }
}

錯誤

[12:45:28 WARN]: [AuroraCore] Plugin AuroraCore v1.0.0 generated an exception while executing task 2
java.lang.IllegalArgumentException: Plugin already initialized!
    at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:218) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:52) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at tiance.auroracore.AuroraCore.<init>(AuroraCore.java:19) ~[?:?]
    at tiance.auroracore.AuroraCore$1.run(AuroraCore.java:69) ~[?:?]
    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:76) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) [craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_281]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_281]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_281]
Caused by: java.lang.IllegalStateException: Initial initialization
    at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:221) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:52) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at tiance.auroracore.AuroraCore.<init>(AuroraCore.java:19) ~[?:?]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_281]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_281]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_281]
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_281]
    at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_281]
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:79) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:143) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:393) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:301) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:379) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:218) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:905) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:263) ~[craftbukkit-1.16.5.jar:3096a-Bukkit-af1a232]
    ... 1 more

我一遍又一遍地編輯代碼,但沒有找到任何解決方案。 我也在網站上看到了一些問題,但沒有一個可以解決我的問題。我沒有發現任何重復的主要 class。我真的不知道該怎么辦,如果有人可以幫忙。 我會非常高興和感謝他或她。

new AuroraCore()替換為AuroraCore.this

您必須將new AuroraCore()替換為AuroraCore.this以初始化service() void

    @Override
    public void onEnable() {

        new BukkitRunnable(){
            public void run(){
                AuroraCore.this.service();//調用service方法
            }
        }.runTaskAsynchronously(this);

        int pluginId = 13929;
        Metrics metrics = new Metrics(this, pluginId);
        saveDefaultConfig();

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM