Warum tritt der Fehler auf und wie behebe ich ihn?java.lang.LinkageError: doppelte Klassendefinition versucht
[02:13:02] [pool-4-thread-2/WARN]: Exception in thread "pool-4-thread-2"
[02:13:02] [pool-4-thread-2/WARN]: java.lang.LinkageError: loader (instance of org/bukkit/plugin/java/PluginClassLoader): attempted duplicate class definition for name: "com/mongodb/client/model/Filters"
[02:13:02] [pool-4-thread-2/WARN]: at java.lang.ClassLoader.defineClass1(Native Method)
[02:13:02] [pool-4-thread-2/WARN]: at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
[02:13:02] [pool-4-thread-2/WARN]: at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[02:13:02] [pool-4-thread-2/WARN]: at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
[02:13:02] [pool-4-thread-2/WARN]: at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
[02:13:02] [pool-4-thread-2/WARN]: at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
[02:13:02] [pool-4-thread-2/WARN]: at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
[02:13:02] [pool-4-thread-2/WARN]: at java.security.AccessController.doPrivileged(Native Method)
[02:13:02] [pool-4-thread-2/WARN]: at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
[02:13:02] [pool-4-thread-2/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101)
[02:13:02] [pool-4-thread-2/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:195)
[02:13:02] [pool-4-thread-2/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:97)
[02:13:02] [pool-4-thread-2/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86)
[02:13:02] [pool-4-thread-2/WARN]: at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[02:13:02] [pool-4-thread-2/WARN]: at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[02:13:02] [pool-4-thread-2/WARN]: at me.franzsan.data.mongo.MongoCharacter.existsCharacter(MongoCharacter.java:109)
[02:13:02] [pool-4-thread-2/WARN]: at me.franzsan.data.mongo.MongoCharacter.lambda$loadCharacter$0(MongoCharacter.java:44)
[02:13:02] [pool-4-thread-2/WARN]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[02:13:02] [pool-4-thread-2/WARN]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[02:13:02] [pool-4-thread-2/WARN]: at java.lang.Thread.run(Thread.java:745)
Das ist die Linie, die den Fehler
FindIterable cursor = connection.getCharacters().find(Filters.eq("uuid", uuid));
verursacht Und dann gibt es auch diese. Es ist von einem anderen Modul und beide sollten gleichzeitig asynchron ausgeführt werden (oder kurz hintereinander, weil ich denke, dass ich momentan nur einen Thread habe). Dieser funktioniert ohne Fehler.
FindIterable cursor = connection.getPlayers().find(Filters.eq("uuid", id));
Filters.eq ist eine statische Methode.
Beide sind mit den gleichen
ExecutorService pool = Executors.newCachedThreadPool();
Ich fühle mich wie ich entscheidendes Wissen fehle bin, aber ich habe keine Ahnung, wo fo rit zu suchen.
Verwenden Sie ein ungewöhnliches Classloading-Setup? – immibis
Ich benutze eine Schnittstelle für MongoCharacter-Klasse und eine sehr ähnliche für MongoPlayer-Klasse (die Klasse aus dem Code, der funktioniert). Ist die MongoCharacter-Klasse das Problem oder ist etwas falsch mit dem Laden des Mongo-Treibers? Sowohl getPlayers() als auch getCharacters() sind MongoCollection-s, die von derselben MongoDatabase-Klasse abgeleitet sind. –
@ImranAli Dies ist keine Unterklasse von 'LinkageError'. Es ist * ein 'LinkageError'. – EJP