我正在为我的世界编译一个插件,它基本上在登录时播放一首歌曲。
我的代码使用这个外部 jar 来完成这项工作:
package com.iqbrod.excilysplugin;
import net.mcjukebox.plugin.bukkit.api.JukeboxAPI;
import net.mcjukebox.plugin.bukkit.api.ResourceType;
import net.mcjukebox.plugin.bukkit.api.models.Media;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
public class LoginListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Media media = new Media(ResourceType.MUSIC, "https://od.lk/s/MTFfMjQ2ODM2NTRf/music1.mp3");
JukeboxAPI.play(event.getPlayer(), media);
}
}
此代码是正确的,应该在PlayerJoinEvent. 我的问题来自对 jar 的编译,其中包含:
com/* #Source code
lib/* #external Jars (MC_Jukebox)
plugin.yml #required by Minecraft Server
META-INF/MANIFEST.MF #details below
源代码com/*是基本的 Java,与现有的插件/代码相比是正确的。Lib包含我的库 jar。plugin.yml是正确的并且在没有对 lib 类的引用的情况下工作。MANIFEST.MF是
Manifest-Version: 1.0
Main-Class: EntryPoint
Class-Path: lib/
问题即使在运行服务器和客户端的类路径中
引用也会导致libMANIFEST
[13:26:27] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to ExcilysPlugin v1.0 org.bukkit.event.EventException: null
(...)
Caused by: java.lang.NoClassDefFoundError: net/mcjukebox/plugin/bukkit/api/models/Media
(...)
Caused by: java.lang.ClassNotFoundException: net.mcjukebox.plugin.bukkit.api.models.Media
如何在文件夹下引用我的 jar 中包含的 jar lib?
我正在使用Intellij进行编码和编译。我读了这篇文章,也尝试使用“提取文件夹”。
两者都会导致 ClassNotFoundException。
蝴蝶不菲
德玛西亚99
相关分类