java - 在 plugin.yml 中找不到主类
问题描述
[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 就是我的主文件所在的位置。我现在该如何解决?
解决方案
plugin.yml 文件是否与 Main 文件位于同一文件夹中?如果是这样,你只需要写
main: Main
推荐阅读
- python - 为什么在添加自定义损失函数后会出现此错误:未知损失函数:DSSIMObjective?
- java - 如何在休眠 5.3 中使用键贡献类型
- mocha.js - Ethereum Solidity Contract - web3.eth.Contract send() 方法中的 Mocha 超时
- haskell - Haskell 初学者级函数实现
- python - 以有效的方式将字典中的所有项目作为参数传递
- javascript - 如何获取 youtube 嵌入的 id?
- c# - 如何在 C#/WPF 中显示来自 ffmpeg 的实时视频流?
- java - 推送 project.properties 问题
- javascript - 如何退出全屏模式并同时触发我自己的功能?
- javascript - 如何提取此功能以不重复代码