我想加載一個在罐子里的類。我已經嘗試使用此代碼加載類:URL dirUrl = jarFile.toURL();URLClassLoader ucl = new URLClassLoader(new URL[] {dirUrl}, getClass().getClassLoader());Class<?> clazz = ucl.loadClass(mainClass);ucl.close();我得到一個例外,它找不到課程:java.lang.RuntimeException: java.lang.ClassNotFoundException: net.api.main at net.al.Main.onEnable(Main.java:39) ~[?:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:741) [spigot.jar:git-Spigot-db6de12-18fbb24] at org.bukkit.Bukkit.reload(Bukkit.java:535) [spigot.jar:git-Spigot-db6de12-18fbb24]
2 回答

海綿寶寶撒
TA貢獻1809條經驗 獲得超8個贊
我通過將 jar 添加到類路徑來修復它。文件到 jar 路徑的代碼:
public static void addURLToClassPath(URL url) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException
{
URLClassLoader classLoader = (URLClassLoader) MyClass.class.getClassLoader();
@SuppressWarnings("rawtypes")
Class clazz = URLClassLoader.class;
@SuppressWarnings("unchecked")
Method method = clazz.getDeclaredMethod("addURL", new Class[] { URL.class });
method.setAccessible(true);
method.invoke(classLoader, new Object[] { url });
}
添加回答
舉報
0/150
提交
取消