Java 在bukkit插件中找不到主类

Java 在bukkit插件中找不到主类,java,minecraft,bukkit,Java,Minecraft,Bukkit,我的插件有问题。错误是“找不到主类‘turtdle.abilities.main’”(我知道我拼错了,但这是我的用户名。) 这个插件是为我的服务器。我已经尝试完成plugin.yml文件(包括作者、版本等),我还尝试将插件名称更改为“Main”。我还尝试移动yml,但没有成功 package turtdle.abilities; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import

我的插件有问题。错误是“找不到主类‘turtdle.abilities.main’”(我知道我拼错了,但这是我的用户名。)

这个插件是为我的服务器。我已经尝试完成plugin.yml文件(包括作者、版本等),我还尝试将插件名称更改为“Main”。我还尝试移动yml,但没有成功

package turtdle.abilities;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

    public Permission playerPermission1 = new Permission("turtdle.abilities.get");
    public Permission playerPermission2 = new Permission("turtdle.place.bedrock");
    @Override
    public void onEnable() {
        getLogger().info("onEnable Has been enabled for abilities plugin! BOOP!");
        new PlayerListener(this);
        new BlockRestricter(this);
        PluginManager pm = getServer().getPluginManager();
        pm.addPermission(playerPermission1);
        pm.addPermission(playerPermission2);
    }

    @Override
    public void onDisable() {
        getLogger().info("onDisable Has been triggered for abilities plugin");
    }

    public boolean onCommand(CommandSender sender, Command cmd, String label,
            String[] args) {
        if (cmd.getName().equalsIgnoreCase("hello") && sender instanceof Player) {
            Player player = (Player) sender;
            player.sendMessage("Hewwooo, " + player.getName());
            return true;
        }
        return false;

    }
}

嘿,这是我的全部错误


不幸的是,另一个答案是不正确的

在链接的粘贴箱中,我们可以看到错误如下:

Caused by: java.lang.ClassNotFoundException: turtdle.Main
当Bukkit试图加载主类时,它正在查找类
turtdle.main
。这很奇怪的原因是plugin.yml告诉它查找
turtdle.abilities.Main
,但它没有这样做

我猜测问题的原因是,有时候在编译项目时,IDE可能实际上没有获取编辑过的plugin.yml文件以放入最终的jar中。要解决此问题,请完成以下步骤:

  • 打开项目文件夹并删除以下任何/所有文件/文件夹(如果存在):
    • 垃圾箱/
    • 目标/
    • YourPluginName.jar
  • 转到服务器的文件夹并在那里删除pluginname.jar
  • 重新编译您的项目并将新jar文件添加到您的插件文件夹中
  • 希望这能解决问题。你的plugin.yml文件和代码看起来都不错,理论上应该可以工作。这是我能想到的唯一会引起这个问题的事情


    祝你好运

    你是如何导出这个插件的?我转到file,Export,jar file(在java下拉列表中),然后就是plugin.yml,然后我不编辑任何其他内容,然后单击finish。也许包名中的句点会影响它,让它认为包名是
    turtdle
    ,并且正在寻找你在这里没有指定的类
    能力。这是编译时错误还是运行时错误?@Sean我试图将包名更改为just turtdle,但错误仍然是sameI试图删除bin的内容,而我在加载eclipe时出错谢天谢地,我有一个备份
    
    package turtdle.abilities;
    
    import org.bukkit.ChatColor;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockPlaceEvent;
    
    public class BlockRestricter implements Listener{
        public BlockRestricter(Main plugin) {
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
        }
        @EventHandler
        public void onBlockPlace (BlockPlaceEvent e) {
            Player player = e.getPlayer();
            Block block = e.getBlock();
            if (!player.hasPermission("turtdle.place.bedrock") &&  block.getType().getId() == 7) {
                player.sendMessage(ChatColor.RED + "You CAN'T PLACE THIS " + ChatColor.BOLD + "BLOCK! " + ChatColor.RESET  + ChatColor.RED +  " it is ILLEGAL");
                e.setCancelled(true);
    
            }
        }
    }
    
    plugin.yml: 
    main: turtdle.abilities.Main
    name: TurtdleAbilitiesCore
    version: 0.2.9
    author: CakeyTheTurtdle
    description: ExclusiveWolfHuntplugin
    commands:
       hello:
          description: When you're lonely
          usage: /hello
    
    Caused by: java.lang.ClassNotFoundException: turtdle.Main