在bukkit插件中找不到主类



我的插件有问题。错误是"找不到主类'turtdle.accabilities.main'"(我知道我拼写错了turtle,但这是我的用户名。)

这个插件是为我的服务器。我已经尝试过完成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;
}
}

 

package turtdle.abilities;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
public class PlayerListener implements Listener{
public PlayerListener(Main plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler
public void onDeath (PlayerDeathEvent e) {
Player player = e.getEntity();
if (!player.hasPermission("turtdle.abilities.get")) {
player.sendMessage(ChatColor.AQUA + "OOF");
}
else {
{
player.sendMessage(ChatColor.AQUA + "you should've abused...");
}
}
}
}

 

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

嘿,这是我的全部错误

https://pastebin.com/FAieE0Lr

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

在您链接的Pastebin中,我们可以看到错误如下:

Caused by: java.lang.ClassNotFoundException: turtdle.Main

当Bukkit试图加载您的主类时,它正在查找类turtdle.Main。这很奇怪的原因是您的插件.yml告诉它查找turtdle.abilities.Main,但它并没有这样做。

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

  1. 打开项目文件夹,删除以下任何/所有文件/文件夹(如果存在):
    • bin/
    • 目标/
    • YourPuginName.jar
  2. 转到服务器的文件夹,并在那里删除YourPluginName.jar
  3. 重新编译你的项目,并将新的jar文件添加到你的插件文件夹中

希望这能解决问题。您的plugin.yml文件和代码看起来都很好,理论上应该可以工作。这是我唯一能想到的会引起这个问题的事情。

祝你好运!

最新更新