我正在为我的bukkit服务器制作一个插件,我无法使用我的外部库,因为服务器在加载时会抛出NoClassDefFound异常,这是因为我使用的是不是Bukkit的外部库插件本身,它真的沙哑我的jimmies。我真的需要这些库,因为没有它们,插件将无法工作。
库:
Json简单
Google GSON(Just for Pretty Print,JSON-Simple很难看)
Apache Commons
我的自定义PacketBuffer库。
那么,有什么方法可以将它们添加到类路径或类似的东西,以便它们在Bukkit中工作?我真的需要知道这一点,否则,我的发展将会戛然而止。
P.S。如果您需要堆栈跟踪或其他任何内容,请告诉我并将其放入此处:D
答案 0 :(得分:-1)
简单的JSON和GSON内置Bukkit,不确定Apache Commons。 如果你想将库加载到插件/服务器,你可以用反射“破解”它。
将库jar文件放在插件可访问的地方,并使用loadFile()
方法加载库文件。
public static void loadFile(File file) throws IOException {
invokeLoader(file.toURI().toURL());
}
public static void invokeLoader(URL url) throws IOException {
final URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
final Class<?> sysclass = URLClassLoader.class;
try {
final Method method = sysclass.getDeclaredMethod("addURL", new Class[] { URL.class });
method.setAccessible(true);
method.invoke(sysloader, new Object[] { url });
} catch (Throwable t) {
t.printStackTrace();
throw new IOException("Could not add URL to system class loader!");
}
}