#java #classloader #minecraft #classnotfoundexception
#java #classloader #Minecraft #classnotfoundexception
Вопрос:
Я пытаюсь загрузить основной класс моего «InventoryModule» с помощью моего модуля-ядра.
Каждый раз, когда я пытаюсь загрузить основной класс, который я успешно прочитал из информационного файла из jar модуля, отображается ClassNotFoundException, и поэтому модуль не загружается.
Вот как я пытаюсь найти и загрузить основной класс (единственное, что есть в классе LobbyModuleConfig — это путь к основному классу)
@SneakyThrows
private Optional<Class<?>> loadClass(JarFile file) {
JarEntry entry = file.getJarEntry("module.json");
@Cleanup BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream(entry)));
LobbyModuleConfig config = LobbyCore.instance().gson().fromJson(reader, LobbyModuleConfig.class);
file.close();
return Optional.ofNullable(Class.forName(config.mainClass()));
}
Это исключение : (
java.lang.ClassNotFoundException: net.bungeecordplugin.bwworld.lobby.module.inventory.Module
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_201]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_201]
at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_201]
at net.bungeecordplugin.bwworld.lobby.core.module.loader.ModuleLoader.findMainClass(ModuleLoader.java:54) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[?:1.8.0_201]
at java.util.Iterator.forEachRemaining(Unknown Source) ~[?:1.8.0_201]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_201]
at java.util.stream.ReferencePipeline.collect(Unknown Source) ~[?:1.8.0_201]
at net.bungeecordplugin.bwworld.lobby.core.module.loader.ModuleLoader.loadModules(ModuleLoader.java:37) ~[?:?]
at net.bungeecordplugin.bwworld.lobby.core.LobbyCore.enable(LobbyCore.java:26) ~[?:?]
at net.bungeecordplugin.bwworld.lobby.core.plugin.LobbyCorePlugin.onEnable(LobbyCorePlugin.java:32) ~[?:?]
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]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:412) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Комментарии:
1. Class.forName() загружает класс, который находится в вашем пути к классу. Кажется, что jar, из которого вы читаете модуль. json не добавлен в ваш путь к классу.
2. И как я могу добавить его в путь к классу?