Scarsz / Configuralize

YAML/JSON configuration library with built-in internationalization
The Unlicense
8 stars 2 forks source link

[ModernPluginLoadingStrategy] Could not load plugin 'xyz.jar' in folder 'plugins' java.lang.reflect.InvocationTargetException: null #8

Open jedrek0429 opened 5 months ago

jedrek0429 commented 5 months ago

Hi! I loved your library and wanted to use it in my plugin (which btw is an addon for DiscordSRV). However, when I tried to run my server, I encountered this error:

[ModernPluginLoadingStrategy] Could not load plugin 'NickSynchronization-1.0-SNAPSHOT.jar' in folder 'plugins'
java.lang.reflect.InvocationTargetException: null
        at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74) ~[?:?]
        at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?]
        at io.papermc.paper.plugin.provider.util.ProviderUtil.loadClass(ProviderUtil.java:60) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.provider.util.ProviderUtil.loadClass(ProviderUtil.java:29) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.provider.type.paper.PaperPluginParent$PaperServerPluginProvider.createInstance(PaperPluginParent.java:169) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.provider.type.paper.PaperPluginParent$PaperServerPluginProvider.createInstance(PaperPluginParent.java:139) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[paper-1.20.4.jar:git-Paper-462]
        at org.bukkit.craftbukkit.v1_20_R3.CraftServer.loadPlugins(CraftServer.java:507) ~[paper-1.20.4.jar:git-Paper-462]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:274) ~[paper-1.20.4.jar:git-Paper-462]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1131) ~[paper-1.20.4.jar:git-Paper-462]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-462]
        at java.lang.Thread.run(Thread.java:1570) ~[?:?]
Caused by: java.lang.NoClassDefFoundError: github/scarsz/configuralize/DynamicConfig
        at me.jedrek0429.discordsrv.nicksynchronization.NickSynchronization.<init>(NickSynchronization.java:61) ~[NickSynchronization-1.0-SNAPSHOT.jar:?]
        at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?]
        ... 14 more
Caused by: java.lang.ClassNotFoundException: github.scarsz.configuralize.DynamicConfig
        at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:142) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:103) ~[paper-1.20.4.jar:git-Paper-462]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
        at me.jedrek0429.discordsrv.nicksynchronization.NickSynchronization.<init>(NickSynchronization.java:61) ~[NickSynchronization-1.0-SNAPSHOT.jar:?]
        at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?]
        ... 14 more

Here is my file structure: image And here's the main file:

package me.jedrek0429.discordsrv.nicksynchronization;

// imports

public final class NickSynchronization extends JavaPlugin {

    @Getter private final File configFile = new File(getDataFolder(), "config.yml");
    private final DynamicConfig config;

    public static NickSynchronization getPlugin() {
        return getPlugin(NickSynchronization.class);
    }

    public static DynamicConfig config() {
        return getPlugin().config;
    }

    public NickSynchronization() {
        super();

        getDataFolder().mkdirs();
        config = new DynamicConfig();
        config.addSource(NickSynchronization.class, "config", configFile);
        try {
            config.saveAllDefaults();
        } catch (IOException e) {
            throw new RuntimeException("Failed to save default config files", e);
        }
        try {
            config.loadAll();
        } catch (Exception e) {
            throw new RuntimeException("Failed to load config", e);
        }
    }

    // ...
}

As you can see, my project is rather basic, so I didn't expect any errors. Is this a problem with your library or on my side?

Scarsz commented 5 months ago

Caused by: java.lang.ClassNotFoundException: github.scarsz.configuralize.DynamicConfig

Are you shading the library into your plugin? Open your plugin .jar file in 7zip and see if the class exists in the jar

jedrek0429 commented 5 months ago

It does.

image

Looks like after some changes I managed to get... a different error.

[19:39:43 ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'NickSynchronization-1.0-SNAPSHOT.jar' in folder 'plugins'
java.lang.reflect.InvocationTargetException: null
        at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74) ~[?:?]
        at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?]
        at io.papermc.paper.plugin.provider.util.ProviderUtil.loadClass(ProviderUtil.java:60) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.provider.util.ProviderUtil.loadClass(ProviderUtil.java:29) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.provider.type.paper.PaperPluginParent$PaperServerPluginProvider.createInstance(PaperPluginParent.java:169) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.provider.type.paper.PaperPluginParent$PaperServerPluginProvider.createInstance(PaperPluginParent.java:139) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.20.4.jar:git-Paper-462]
        at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[paper-1.20.4.jar:git-Paper-462]
        at org.bukkit.craftbukkit.v1_20_R3.CraftServer.loadPlugins(CraftServer.java:507) ~[paper-1.20.4.jar:git-Paper-462]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:274) ~[paper-1.20.4.jar:git-Paper-462]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1131) ~[paper-1.20.4.jar:git-Paper-462]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-462]
        at java.lang.Thread.run(Thread.java:1570) ~[?:?]
Caused by: java.lang.NoSuchMethodError: 'void github.scarsz.configuralize.DynamicConfig.<init>(github.scarsz.configuralize.Source[])'
        at me.jedrek0429.discordsrv.nicksynchronization.NickSynchronization.<init>(NickSynchronization.java:32) ~[NickSynchronization-1.0-SNAPSHOT.jar:?]
        at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?]
        ... 14 more

These are the overlapping resources:

[WARNING] NickSynchronization-1.0-SNAPSHOT.jar, configuralize-1.4.0.jar, dynamics-4.0.jar, fluent-2.0.jar, json-simple-1.1.1.jar, snakeyaml-2.2.jar define 1 overlapping resource: 
[WARNING]   - META-INF/MANIFEST.MF
[WARNING] configuralize-1.4.0.jar, snakeyaml-2.2.jar define 217 overlapping classes and resources: 
[WARNING]   - META-INF/maven/org.yaml/snakeyaml/pom.properties
[WARNING]   - META-INF/maven/org.yaml/snakeyaml/pom.xml
[WARNING]   - org.yaml.snakeyaml.DumperOptions
[WARNING]   - org.yaml.snakeyaml.DumperOptions$FlowStyle
[WARNING]   - org.yaml.snakeyaml.DumperOptions$LineBreak
[WARNING]   - org.yaml.snakeyaml.DumperOptions$NonPrintableStyle
[WARNING]   - org.yaml.snakeyaml.DumperOptions$ScalarStyle
[WARNING]   - org.yaml.snakeyaml.DumperOptions$Version
[WARNING]   - org.yaml.snakeyaml.LoaderOptions
[WARNING]   - org.yaml.snakeyaml.TypeDescription
[WARNING]   - 207 more...
[WARNING] configuralize-1.4.0.jar, json-simple-1.1.1.jar define 13 overlapping classes and resources: 
[WARNING]   - META-INF/maven/com.googlecode.json-simple/json-simple/pom.properties
[WARNING]   - META-INF/maven/com.googlecode.json-simple/json-simple/pom.xml
[WARNING]   - org.json.simple.JSONArray
[WARNING]   - org.json.simple.JSONAware
[WARNING]   - org.json.simple.JSONObject
[WARNING]   - org.json.simple.JSONStreamAware
[WARNING]   - org.json.simple.JSONValue
[WARNING]   - org.json.simple.parser.ContainerFactory
[WARNING]   - org.json.simple.parser.ContentHandler
[WARNING]   - org.json.simple.parser.JSONParser
[WARNING]   - 3 more...
[WARNING] configuralize-1.4.0.jar, dynamics-4.0.jar define 41 overlapping classes and resources: 
[WARNING]   - META-INF/maven/com.github.alexheretic/dynamics/pom.properties
[WARNING]   - META-INF/maven/com.github.alexheretic/dynamics/pom.xml
[WARNING]   - alexh.LiteJoiner
[WARNING]   - alexh.weak.AbstractAbsence
[WARNING]   - alexh.weak.AbstractDynamic
[WARNING]   - alexh.weak.BreadthChildIterator
[WARNING]   - alexh.weak.ChildAbsence
[WARNING]   - alexh.weak.ChildAbsence$Missing
[WARNING]   - alexh.weak.ChildAbsence$Null
[WARNING]   - alexh.weak.Converter
[WARNING]   - 31 more...
[WARNING] configuralize-1.4.0.jar, fluent-2.0.jar define 11 overlapping classes and resources: 
[WARNING]   - META-INF/maven/com.github.alexheretic/fluent/pom.properties
[WARNING]   - META-INF/maven/com.github.alexheretic/fluent/pom.xml
[WARNING]   - alexh.Fluent
[WARNING]   - alexh.Fluent$ConcurrentHashMap
[WARNING]   - alexh.Fluent$ConcurrentSkipListMap
[WARNING]   - alexh.Fluent$EnumMap
[WARNING]   - alexh.Fluent$HashMap
[WARNING]   - alexh.Fluent$IdentityHashMap
[WARNING]   - alexh.Fluent$LinkedHashMap
[WARNING]   - alexh.Fluent$Map
[WARNING]   - 1 more...
[WARNING] maven-shade-plugin has detected that some class files are
[WARNING] present in two or more JARs. When this happens, only one
[WARNING] single version of the class is copied to the uber jar.
[WARNING] Usually this is not harmful and you can skip these warnings,
[WARNING] otherwise try to manually exclude artifacts based on
[WARNING] mvn dependency:tree -Ddetail=true and the above output.
[WARNING] See http://maven.apache.org/plugins/maven-shade-plugin/

This is my first time using Maven, so I may have overlooked an easy solution. Sorry for bothering you if that's the case.