java.nio.file.FileSystemNotFoundException on Linux
Looking at the code in IntelliJ, it appears to be the following line of code at fault (in copyDirectoryFromJar):
FileSystem fileSystem = FileSystems.newFileSystem(Paths.get(split[0].substring(6)), classInJar.getClassLoader());
split[0] in the following would be as follows:
file:/home/rallias/.local/share/multimc/instances/DevTesting/.minecraft/mods/Triumph-1.12.2-1.7.2.jar
There's two potential options to fix this issue.
-
classInJar.getClassloader().loadResource() (based on what the stack trace looks like it's doing, this would be the best option, but would require having all the files listed)
-
Use java.net.URI.getPath() to grab the path appropriately, rather than attempting to manipulate it manually.
The stacktrace is below. The reason for failure is because your code does not include the preceding '/', required to get an exact (rather than relative) file on Linux (and, I think, MacOS).
[12:48:14] [Server thread/ERROR] [FML]: Exception caught during firing event com.bloodnbonesgaming.bnbgamingcore.events.AdvancementAboutToLoadEvent@cbde13c:
java.nio.file.FileSystemNotFoundException: home/rallias/.local/share/multimc/instances/DevTesting/.minecraft/mods/Triumph-1.12.2-1.7.2.jar
at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:120) ~[zipfs.jar:1.8.0_151]
at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139) ~[zipfs.jar:1.8.0_151]
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:390) ~[?:1.8.0_151]
at com.bloodnbonesgaming.lib.util.FileHelper.copyDirectoryFromJar(FileHelper.java:61) ~[FileHelper.class:?]
at com.bloodnbonesgaming.triumph.config.DefaultConfigs.printDefaultConfigs(DefaultConfigs.java:10) ~[DefaultConfigs.class:?]
at com.bloodnbonesgaming.triumph.config.ConfigurationManager.handleDefaultConfigsAndDocumentation(ConfigurationManager.java:76) ~[ConfigurationManager.class:?]
at com.bloodnbonesgaming.triumph.config.ConfigurationManager.init(ConfigurationManager.java:41) ~[ConfigurationManager.class:?]
at com.bloodnbonesgaming.triumph.events.CoreEventHandler.onAdvancementAboutToLoad(CoreEventHandler.java:60) ~[CoreEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_17_CoreEventHandler_onAdvancementAboutToLoad_AdvancementAboutToLoadEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179) [EventBus.class:?]
at net.minecraft.advancements.AdvancementManager.func_192777_a(AdvancementManager.java:184) [ns.class:?]
at net.minecraft.advancements.AdvancementManager.func_192779_a(AdvancementManager.java:68) [ns.class:?]
at net.minecraft.advancements.AdvancementManager.<init>(AdvancementManager.java:60) [ns.class:?]
at net.minecraft.world.WorldServer.func_175643_b(WorldServer.java:156) [oo.class:?]
at net.minecraft.server.integrated.IntegratedServer.func_71247_a(IntegratedServer.java:122) [chd.class:?]
at net.minecraft.server.integrated.IntegratedServer.func_71197_b(IntegratedServer.java:156) [chd.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:484) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
[12:48:14] [Server thread/ERROR] [FML]: Index: 1 Listeners:
[12:48:14] [Server thread/ERROR] [FML]: 0: NORMAL
[12:48:14] [Server thread/ERROR] [FML]: 1: ASM: com.bloodnbonesgaming.triumph.events.CoreEventHandler@5f735240 onAdvancementAboutToLoad(Lcom/bloodnbonesgaming/bnbgamingcore/events/AdvancementAboutToLoadEvent;)V
[12:48:14] [Server thread/ERROR]: Encountered an unexpected exception
java.nio.file.FileSystemNotFoundException: home/rallias/.local/share/multimc/instances/DevTesting/.minecraft/mods/Triumph-1.12.2-1.7.2.jar
at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:120) ~[zipfs.jar:1.8.0_151]
at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139) ~[zipfs.jar:1.8.0_151]
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:390) ~[?:1.8.0_151]
at com.bloodnbonesgaming.lib.util.FileHelper.copyDirectoryFromJar(FileHelper.java:61) ~[FileHelper.class:?]
at com.bloodnbonesgaming.triumph.config.DefaultConfigs.printDefaultConfigs(DefaultConfigs.java:10) ~[DefaultConfigs.class:?]
at com.bloodnbonesgaming.triumph.config.ConfigurationManager.handleDefaultConfigsAndDocumentation(ConfigurationManager.java:76) ~[ConfigurationManager.class:?]
at com.bloodnbonesgaming.triumph.config.ConfigurationManager.init(ConfigurationManager.java:41) ~[ConfigurationManager.class:?]
at com.bloodnbonesgaming.triumph.events.CoreEventHandler.onAdvancementAboutToLoad(CoreEventHandler.java:60) ~[CoreEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_17_CoreEventHandler_onAdvancementAboutToLoad_AdvancementAboutToLoadEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179) ~[EventBus.class:?]
at net.minecraft.advancements.AdvancementManager.func_192777_a(AdvancementManager.java:184) ~[ns.class:?]
at net.minecraft.advancements.AdvancementManager.func_192779_a(AdvancementManager.java:68) ~[ns.class:?]
at net.minecraft.advancements.AdvancementManager.<init>(AdvancementManager.java:60) ~[ns.class:?]
at net.minecraft.world.WorldServer.func_175643_b(WorldServer.java:156) ~[oo.class:?]
at net.minecraft.server.integrated.IntegratedServer.func_71247_a(IntegratedServer.java:122) ~[chd.class:?]
at net.minecraft.server.integrated.IntegratedServer.func_71197_b(IntegratedServer.java:156) ~[chd.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:484) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
Attempted to fix in 0.9.1 release. Let me know how it goes!