libby
libby copied to clipboard
Windows issues with Transitive Dependency Resolver
The following error is thrown when using the Transitive Dependency Helper on windows machines. I believe the error is caused by failing to convert to a URI for support across Linux/Windows OS. I could be wrong and input is appreciated!
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.itsrainingplex.libs.com.alessiodp.libby.transitive.TransitiveDependencyHelper.findTransitiveLibraries(TransitiveDependencyHelper.java:170) ~[RDQ-4.1.5.jar:?]
at com.itsrainingplex.libs.com.alessiodp.libby.LibraryManager.resolveTransitiveLibraries(LibraryManager.java:655) ~[RDQ-4.1.5.jar:?]
at com.itsrainingplex.rdq.Settings.RManager_Paper.loadLibrary(RManager_Paper.java:21) ~[RDQ-4.1.5.jar:?]
at com.itsrainingplex.rdq.Settings.Depends.loadWebJars(Depends.java:147) ~[RDQ-4.1.5.jar:?]
at com.itsrainingplex.rdq.Settings.Depends.loadDepends(Depends.java:74) ~[RDQ-4.1.5.jar:?]
at com.itsrainingplex.rdq.RDQ.onEnable(RDQ.java:39) ~[RDQ-4.1.5.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:281) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:190) ~[paper-1.20.4.jar:git-Paper-365]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.4.jar:git-Paper-365]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:637) ~[paper-1.20.4.jar:git-Paper-365]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:548) ~[paper-1.20.4.jar:git-Paper-365]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:673) ~[paper-1.20.4.jar:git-Paper-365]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:433) ~[paper-1.20.4.jar:git-Paper-365]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:308) ~[paper-1.20.4.jar:git-Paper-365]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1132) ~[paper-1.20.4.jar:git-Paper-365]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:321) ~[paper-1.20.4.jar:git-Paper-365]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.reflect.InvocationTargetException
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
at com.itsrainingplex.libs.com.alessiodp.libby.transitive.TransitiveDependencyHelper.findTransitiveLibraries(TransitiveDependencyHelper.java:135) ~[RDQ-4.1.5.jar:?]
... 17 more
Caused by: java.nio.file.InvalidPathException: Illegal char <:> at index 90: C:\Users\XXX\Desktop\Server\plugins\RDQ\lib\org\webjars\npm\csstype\maven-metadata-https:\repo1.maven.org\maven2\resolver-status.properties
at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:204) ~[?:?]
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:175) ~[?:?]
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77) ~[?:?]
at sun.nio.fs.WindowsPath.parse(WindowsPath.java:92) ~[?:?]
at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:231) ~[?:?]
at java.io.File.toPath(File.java:2401) ~[?:?]
at org.eclipse.aether.internal.impl.DefaultTrackingFileManager.read(DefaultTrackingFileManager.java:56) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.read(DefaultUpdateCheckManager.java:461) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkMetadata(DefaultUpdateCheckManager.java:261) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolve(DefaultMetadataResolver.java:303) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolveMetadata(DefaultMetadataResolver.java:180) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.apache.maven.repository.internal.DefaultVersionRangeResolver.getVersions(DefaultVersionRangeResolver.java:189) ~[maven-resolver-provider-3.9.6.jar:3.9.6]
at org.apache.maven.repository.internal.DefaultVersionRangeResolver.resolveVersionRange(DefaultVersionRangeResolver.java:142) ~[maven-resolver-provider-3.9.6.jar:3.9.6]
at org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.cachedResolveRangeResult(DependencyCollectorDelegate.java:406) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.processDependency(DfDependencyCollector.java:202) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.processDependency(DfDependencyCollector.java:156) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.process(DfDependencyCollector.java:138) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.doRecurse(DfDependencyCollector.java:343) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.processDependency(DfDependencyCollector.java:277) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.processDependency(DfDependencyCollector.java:156) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.process(DfDependencyCollector.java:138) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector.doCollectDependencies(DfDependencyCollector.java:108) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.collectDependencies(DependencyCollectorDelegate.java:222) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:87) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:328) ~[maven-resolver-impl-1.9.18.jar:1.9.18]
at com.itsrainingplex.libs.com.alessiodp.libby.transitive.TransitiveDependencyCollector.findTransitiveDependencies(TransitiveDependencyCollector.java:96) ~[?:?]
at com.itsrainingplex.libs.com.alessiodp.libby.transitive.TransitiveDependencyCollector.findTransitiveDependencies(TransitiveDependencyCollector.java:115) ~[?:?]
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
at com.itsrainingplex.libs.com.alessiodp.libby.transitive.TransitiveDependencyHelper.findTransitiveLibraries(TransitiveDependencyHelper.java:135) ~[RDQ-4.1.5.jar:?]
... 17 more
[21:30:39] [Server thread/INFO]: [RDQ] Disabling RDQ v4.1.5
Can you post the code which creates the Library
object that's giving the error? And also the part which adds the repositories.
No problem! Here is the relevant portion. Please note: the only change I make when overriding Library is removing the logger messages.
public static void loadDepends() {
RDQ.getInstance().sendLoggerInfo("Getting depends...");
RManager rManager;
if (paper) {
rManager = new RManager_Paper(RDQ.getInstance());
} else {
rManager = new RManager_Bukkit(RDQ.getInstance());
}
rManager.addMavenCentral();
rManager.addJitPack();
loadWebJars(rManager);
RDQ.getInstance().sendLoggerInfo("Dependencies loaded...");
}
private static void loadWebJars(@NotNull RManager rManager) {
Library vue = Library.builder()
.groupId("org.webjars.npm")
.artifactId("vue")
.version("3.3.4")
.resolveTransitiveDependencies(true)
.build();
rManager.loadLibrary(vue);
}
@Override
public void loadLibrary(@NotNull Library library) {
Path file = this.downloadLibrary((Library) Objects.requireNonNull(library, "library"));
if (library.resolveTransitiveDependencies()) {
this.resolveTransitiveLibraries(library);
}
if (library.isIsolatedLoad()) {
this.addToIsolatedClasspath(library, file);
} else {
this.addToClasspath(file);
}
}
Java's nio is throwing the error likely due to the "/" which needs to change to "\\" here:
public TransitiveDependencyCollector(Path saveDirectory) {
this.saveDirectory = saveDirectory;
this.repositorySystemSession = newRepositorySystemSession(repositorySystem);
}
Something like:
public TransitiveDependencyCollector(Path saveDirectory) {
this.saveDirectory = saveDirectory.replace("/", "\\");
this.repositorySystemSession = newRepositorySystemSession(repositorySystem);
}
This seems to be an error with Maven's resolver. For users that run into this issue. Load all the transitive libraries manually using LibraryManager#Builder.