英文:
Minecraft plugin load failed: java.lang.IllegalArgumentException
问题
我用 Spigot 制作了一个基本的 1.19 插件,并且用 Paper 加载它。但是它显示加载失败。这是异常:
[20:50:56 ERROR]: [DirectoryProviderSource] Error loading plugin: File 'plugins\Real_Craft.jar' failed to load!
java.lang.RuntimeException: File 'plugins\Real_Craft.jar' failed to load!
at io.papermc.paper.plugin.provider.source.FileProviderSource.registerProviders(FileProviderSource.java:59) ~[paper-1.19.4.jar:git-Paper-483]
...
...
Caused by: java.lang.IllegalArgumentException: File 'plugins\Real_Craft.jar' is not a valid plugin file, cannot load a plugin from it!
at io.papermc.paper.plugin.provider.source.FileProviderSource.registerProviders(FileProviderSource.java:54) ~[paper-1.19.4.jar:git-Paper-483]
... 20 more
我尝试从一些方法修复它,我遵循的教程链接是 https://www.youtube.com/watch?v=WcFb0GO14zY,并且我在我的代码中找不到错误。下面是我的 plugin.yml 文件和主脚本:
name: RealCraft
version: 1.0.0
author: knowscratcher
main: com.knowscratcher.realcraft.RealCraft
api-version: 1.19
我的主脚本是
package com.knowscratcher.realcraft;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
public class RealCraft extends JavaPlugin {
@Override
public void onEnable() {
getServer().getConsoleSender().sendMessage(ChatColor.LIGHT_PURPLE+"[RealCraft]:Plugin is enabled");
}
@Override
public void onDisable() {
getServer().getConsoleSender().sendMessage(ChatColor.RED+"[RealCraft]:Plugin is disabled");
}
}
英文:
I made a basic 1.19 plugin using spigot, and load it with paper. But it says load fail. This is the exception:
[20:50:56 ERROR]: [DirectoryProviderSource] Error loading plugin: File 'plugins\Real_Craft.jar' failed to load!
java.lang.RuntimeException: File 'plugins\Real_Craft.jar' failed to load!
at io.papermc.paper.plugin.provider.source.FileProviderSource.registerProviders(FileProviderSource.java:59) ~[paper-1.19.4.jar:git-Paper-483]
at io.papermc.paper.plugin.provider.source.DirectoryProviderSource.lambda$registerProviders$2(DirectoryProviderSource.java:32) ~[paper-1.19.4.jar:git-Paper-483]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?]
at io.papermc.paper.plugin.provider.source.DirectoryProviderSource.registerProviders(DirectoryProviderSource.java:30) ~[paper-1.19.4.jar:git-Paper-483]
at io.papermc.paper.plugin.provider.source.DirectoryProviderSource.registerProviders(DirectoryProviderSource.java:14) ~[paper-1.19.4.jar:git-Paper-483]
at io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(EntrypointUtil.java:14) ~[paper-1.19.4.jar:git-Paper-483]
at io.papermc.paper.plugin.PluginInitializerManager.load(PluginInitializerManager.java:100) ~[paper-1.19.4.jar:git-Paper-483]
at net.minecraft.server.Main.main(Main.java:126) ~[paper-1.19.4.jar:git-Paper-483]
at org.bukkit.craftbukkit.Main.main(Main.java:309) ~[paper-1.19.4.jar:git-Paper-483]
at io.papermc.paperclip.Paperclip.lambda$main$0(Paperclip.java:42) ~[app:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.IllegalArgumentException: File 'plugins\Real_Craft.jar' is not a valid plugin file, cannot load a plugin from it!
at io.papermc.paper.plugin.provider.source.FileProviderSource.registerProviders(FileProviderSource.java:54) ~[paper-1.19.4.jar:git-Paper-483]
... 20 more
I tried to fix it from some ways to fix it, the tutorial I followed is https://www.youtube.com/watch?v=WcFb0GO14zY, and I can't find errors in my code. here's my plugin.yml and main script
name: RealCraft
version: 1.0.0
author: knowscratcher
main: com.knowscratcher.realcraft.RealCraft
api-version: 1.19
and my main script is
package com.knowscratcher.realcraft;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
public class RealCraft extends JavaPlugin {
@Override
public void onEnable() {
getServer().getConsoleSender().sendMessage(ChatColor.LIGHT_PURPLE+"[RealCraft]:Plugin is enabled");
}
@Override
public void onDisable() {
getServer().getConsoleSender().sendMessage(ChatColor.RED+"[RealCraft]:Plugin is disabled");
}
}
答案1
得分: 0
如果 plugin.yml 文件不在 jar 包中,bukkit、spigot 和 paper 就无法加载插件。确保在最终的 jar 包中包含它。你可以手动操作,但我不建议这样做。
你应该使用项目管理器来自动包含 plugin.yml。
在这里你可以看到一个使用 Maven 的极简插件的示例:https://github.com/OnyxianSoul/SendConsoleMessage。
如果你按照相同的方式设置文件夹结构和 pom.xml,并使用 Maven 构建你的 jar 包,你的插件 jar 包将包含必要的文件,并正确加载。
祝好运
英文:
If the plugin.yml file isn't on the jar, bukkit, spigot and paper cannot load the plugin. You need to make sure to include it in the final jar. You can do it manually, but I don't recommend it.
You should use a project manager to make the plugin.yml automatically included.
Here you can see an example of an extremely simple plugin that uses Maven: https://github.com/OnyxianSoul/SendConsoleMessage .
If you set up your folder structure and pom.xml in the same way, and use maven to build your jar, your plugin jar will include the necessairy files, and will be loaded correctly.
Good luck
答案2
得分: -1
尝试在Intellij上使用Minecraft开发插件,它会设置工作空间。根据您的错误信息,似乎您的插件没有包含必要的文件,以便被正确识别。https://plugins.jetbrains.com/plugin/8327-minecraft-development
总的来说,这也更容易使用。
英文:
Try using the Minecraft Development plugin on Intellij, it sets up the workspace. According to your error it seems like your plugin doesn't contain the files for it to be properly recognized. https://plugins.jetbrains.com/plugin/8327-minecraft-development
It's also just a lot easier to use in general.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论