【问题标题】:Can't find main class in plugin.yml在 plugin.yml 中找不到主类
【发布时间】:2019-06-15 08:41:17
【问题描述】:
[04:48:05 ERROR]: Could not load 'plugins\HelloWorld.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.spoonle.helloworld.Main'
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:66) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugins(CraftServer.java:291) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.java:152) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:505) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]
Caused by: java.lang.ClassNotFoundException: me.spoonle.helloworld.Main
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_211]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_211]
        at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_211]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        ... 7 more

将插件加载到测试服务器时,我不断收到此错误。 (我确实检查了其他帖子,但他们没有帮助我)

plugin.yml 文件:

name: HelloWorld
version: 1.0
author: Spoonle
main: me.spoonle.helloworld.Main

commands:
  hello:
    alias: [hi]

我需要添加一些东西吗?这些是空格而不是制表符。我看到使用 TAB 会破坏 yml 文件,所以我使用了空格。

代码:

package me.spoonle.helloworld.commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import me.spoonle.helloworld.Main;

public class HelloCommand implements CommandExecutor {

    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[] args) {
        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("Hello!");
            return true;
        } else {
            p.sendMessage("You do not have permissions to use this command!");
        }

        return false;
    }

}

这正是我想要插件做的事情。我不知道这是否有帮助,但如果你需要它就在这里。

为什么我不能加载我的插件??

编辑:我修复了无效的 plugin.yml。现在它说它找不到主类。如上面在 plugin.yml 代码中所述,它的 me.spoonle.helloworld.Main 就是我的主文件所在的位置。我现在该如何解决?

【问题讨论】:

    标签: java eclipse plugins minecraft


    【解决方案1】:

    plugin.yml 文件是否与 Main 文件位于同一文件夹中? 如果是这样,你只需要写

    main: Main

    【讨论】:

      【解决方案2】:
      1. 您的主类必须扩展 JavaPlugin
      2. 您的 plugin.yml 必须声明 "main: ",然后是您的主类。

      在包me.spoonle.helloworld 中应该有一个名为Main 的类。如果是这样,您的主类位于正确的位置。

      另外,使用Main 作为主类也不是一个好习惯。请改用您的程序名称。

      示例

      主要:

      package me.spoonle.helloworld;
      
      import org.bukkit.plugin.java.JavaPlugin;
      
      public class Main extends JavaPlugin {
        @Override
        public void onEnable() {
          // Initialise HelloCommand here and set the executor of "hello" command
        }
      
        @Override
        public void onDisable() {
      
        }
      }
      

      插件.yml:

      name: HelloWorld
      version: 1.0
      author: Spoonle
      main: me.spoonle.helloworld.Main
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-19
        • 2015-05-31
        • 1970-01-01
        • 2019-01-28
        相关资源
        最近更新 更多