繁体   English   中英

在 Minecraft bukkit 插件中找不到主要 class

[英]Cannot find main class in Minecraft bukkit plugin

我正在尝试学习如何编写我的世界插件但是我在开始时遇到了一些问题,当我尝试运行导出的插件时,我得到一个主要的 class 未找到错误。 我已经尝试移动 plugin.yml 文件,检查所有部分都已导出并重命名类等无济于事。 还阅读了现有的问题。 任何帮助将不胜感激。

主要的:

package me.raultechsupport.helloworld;

import org.bukkit.plugin.java.JavaPlugin;
import me.raultechsupport.helloworld.commands.hellocommand;

public class Main extends JavaPlugin {

    @Override
    public void onEnable() {
        new hellocommand(this);
    }
}

你好命令:

package me.raultechsupport.helloworld.commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.raultechsupport.helloworld.Main;

public class hellocommand implements CommandExecutor {

    @SuppressWarnings("unused")
    private Main plugin;

    public hellocommand(Main plugin) {
        this.plugin = plugin;
        plugin.getCommand("hello").setExecutor(this);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg3) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Only players may execute this command!");
            return true;
        }
        Player p = (Player) sender;

        if (p.hasPermission("hello.use")) {
            p.sendMessage("Hi!");
            return true;
        } else {
            p.sendMessage("You do not have permission to execute this command!");
        }

        return false;
    }

}

插件.yml:

name: HelloWorld
version: 1.0
author: RaulTechSupport
main: me.raultechsupport.helloworld.Main
description: Hello.

commands:
  hello:
    aliases: [hi]
    description: Hi!

控制台错误:

org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.raultechsupport.helloworld.Main' [11:36:00 ERROR]: Could not load 'plugins/HelloWorld.jar' in folder 'plugins' at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:137) ~[patched_1.16.5.jar:git-Purpur-1082] at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:81) ~[patched_1.16.5.jar:git-Purpur-1082] at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:305) ~[patched_1.16.5.jar:git-Purpur-1082]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:397) ~[patched_1.16.5.jar:git-Purpur-1082]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:389) ~[patched_1.16.5.jar:git-Purpur-1082]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:264) ~[patched_1.16.5.jar:git-Purpur-1082]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1070) ~[patched_1.16.5.jar:git-Purpur-1082]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Purpur-1082]
Caused by: java.lang.ClassNotFoundException: me.raultechsupport.helloworld.Main
at java.lang.Thread.run(Thread.java:834) [?:?]
at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:183) ~[patched_1.16.5.jar:git-Purpur-1082]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:111) ~[patched_1.16.5.jar:git-Purpur-1082]
at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
at java.lang.Class.forName0(Native Method) ~[?:?]
at java.lang.Class.forName(Class.java:398) ~[?:?]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:79) ~[patched_1.16.5.jar:git-Purpur-1082]
at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
... 8 more

Package Explorer的图片编辑上一个问题,更正建议但错误仍然存在

我已经有一段时间没有编写插件了,但回顾我之前所做的,我的plugin.yml不在referenced libraries中:

在此处输入图像描述

另外,我的plugin.yml和你的有点不同:

name: Message
main: Main.MainMessage
version: 1.0.0
author: Tom Croux - CerfMetal
commands:
  msg:
    description: Send a private message
    permission: msg.use
  r:
    description: Reply to a private message
    permission: msg.use
  mute:
    description: Mute a player
    permission: msg.use
  unmute:
    description: Unmute a player
    permission: msg.use

如果您使用 Eclipse 进行编译,您应该将您的plugin.yml放在您的源文件夹 ( src ) 中。 如果您使用 IntelliJ,请将文件放在resources文件夹中。 您的 API(Spigot 或 Bukkit)无法加载该文件,因为它实际上并未在您的最终.jar文件中导出。 您可以通过使用 7Zip 或 WinRAR 等存档程序打开 Jar 文件来查看您的文件是否已导出。 plugin.yml 应该在文件的根目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM