AlessioDP / libby

A runtime dependency management library for plugins running in Java-based Minecraft server platforms.
MIT License
81 stars 20 forks source link

PaperLibraryLoader error #35

Closed ItsRainingHP closed 9 months ago

ItsRainingHP commented 9 months ago

Error:

image

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.itsrainingplex</groupId>
  <artifactId>JarLoader</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <name>JarLoader</name>

  <properties>
    <java.version>17</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <configuration>
                    <relocations>
                        <relocation>
                            <pattern>net.byteflux.libby</pattern>
                            <pattern>com.alessiodp.libby</pattern>
                            <shadedPattern>yourPackage.libs.com.alessiodp.libby</shadedPattern>
                        </relocation>
                    </relocations>
                </configuration>
                <version>3.4.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

    <repositories>
        <repository>
            <id>papermc-repo</id>
            <url>https://repo.papermc.io/repository/maven-public/</url>
        </repository>
        <repository>
            <id>sonatype</id>
            <url>https://oss.sonatype.org/content/groups/public/</url>
        </repository>
        <repository>
            <id>maven-snapshots</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>io.papermc.paper</groupId>
            <artifactId>paper-api</artifactId>
            <version>1.19.4-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alessiodp.libby</groupId>
            <artifactId>libby-paper</artifactId>
            <version>2.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>io.javalin</groupId>
            <artifactId>javalin-bundle</artifactId>
            <version>5.6.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

Main class


import com.alessiodp.libby.Library;
import com.alessiodp.libby.PaperLibraryManager;
import io.javalin.Javalin;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.Arrays;

public final class JarLoader extends JavaPlugin {

    @Override
    public void onEnable() {
        PaperLibraryManager paperLibraryManager = new PaperLibraryManager(this);
        Library lib = Library.builder()
                .groupId("io.javalin")
                .artifactId("javalin-bundle")
                .version("5.6.1")
                .build();
        Library lib2 = Library.builder()
                .groupId("com.fasterxml.jackson.core")
                .artifactId("jackson-core")
                .version("2.15.1")
                .build();
        Library lib3 = Library.builder()
                .groupId("com.fasterxml.jackson.core")
                .artifactId("jackson-databind")
                .version("2.15.1")
                .build();
        Library lib4 = Library.builder()
                .groupId("org.slf4j")
                .artifactId("slf4j-simple")
                .version("2.0.6")
                .build();
        paperLibraryManager.addMavenCentral();
        paperLibraryManager.loadLibrary(lib2);
        paperLibraryManager.loadLibrary(lib3);
        paperLibraryManager.loadLibrary(lib4);
        paperLibraryManager.loadLibrary(lib);

        try (Javalin server = Javalin.create()
                .get("/", ctx -> ctx.result("Hello World"))
                .start(7070)) {
            getLogger().warning("Loaded server.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }
}
frengor commented 9 months ago

You need to also resolve the transitive dependencies of Javalin:

 Library lib = Library.builder()
                 .groupId("io.javalin")
                 .artifactId("javalin-bundle")
                 .version("5.6.1")
+                .resolveTransitiveDependencies(true)
                 .build();
ItsRainingHP commented 9 months ago

You need to also resolve the transitive dependencies of Javalin:

 Library lib = Library.builder()
                 .groupId("io.javalin")
                 .artifactId("javalin-bundle")
                 .version("5.6.1")
+                .resolveTransitiveDependencies(true)
                 .build();

This was the answer. I additionally had to clear the old lib folder.