Compiler-Fehler NoClassDefFoundError beim Laden einer Class

The_F4nat1c

Mitglied
Ich versuche mit Hilfe eines URLClassLoaders eine bestimmte Klasse zu laden allerdings bekomme ich immer einen Fehler. Ich versuche eine Klasse aus einer anderen Jar zu laden dabei entsteht dann der Fehler.


Dies befindet sich in jar1
Code:
java.lang.NoClassDefFoundError: me/The_F4nAt1c/APC/Core/Modules/ModuleMain
    at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_181]
    at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_181]
    at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.8.0_181]
    at java.net.URLClassLoader.defineClass(Unknown Source) ~[?:1.8.0_181]
    at java.net.URLClassLoader.access$100(Unknown Source) ~[?:1.8.0_181]
    at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.8.0_181]
    at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.8.0_181]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_181]
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_181]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_181]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_181]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_181]
    at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_181]
    at me.The_F4nAt1c.APC.Core.Modules.ModuleValidator.precheck(ModuleValidator.java:47) ~[?:?]
    at me.The_F4nAt1c.APC.Core.Modules.ModuleLoader.loadModule(ModuleLoader.java:37) ~[?:?]
    at me.The_F4nAt1c.APC.Core.Modules.ModuleLoader.<clinit>(ModuleLoader.java:18) ~[?:?]
    at me.The_F4nAt1c.APC.Main.Initialization.OnLoad.<clinit>(OnLoad.java:39) ~[?:?]
    at me.The_F4nAt1c.APC.Main.APCore.onLoad(APCore.java:33) ~[?:?]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.loadPlugins(CraftServer.java:310) [spigot.jar:git-Spigot-dcd1643-e60fc34]
    at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:205) [spigot.jar:git-Spigot-dcd1643-e60fc34]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:545) [spigot.jar:git-Spigot-dcd1643-e60fc34]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
Caused by: java.lang.ClassNotFoundException: me.The_F4nAt1c.APC.Core.Modules.ModuleMain
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_181]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_181]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_181]


Ich lade die Class so:
Java:
ModuleDescription des = new ModuleDescription(f);
            this.description = des;
            f.delete();
            URLClassLoader mainLoader = new URLClassLoader(new URL[]{new URL("file:" + path)});

            //CHECK MAIN CLASS
            System.out.println(des.getMain());
            ModuleMain mainClass = (ModuleMain) Class.forName(des.getMain(), true, mainLoader).newInstance();


Dies befindet sich in JAR2:
Dies ist der Code aus der Class die ich laden möchte:
Java:
package de.test.module;

import me.The_F4nAt1c.APC.Core.Modules.ModuleMain;
import org.bukkit.Bukkit;

public class Mod extends ModuleMain {

    @Override
    public void onBeforePluginValidate() {
        Bukkit.getConsoleSender().sendMessage("§6TEST MODULE VALIDATION");
    }
}
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Ich denke, das Problem wird sein, dass der URLClassLoader beim Laden der Klasse de.test.module.Main eben die Referenz auf die Superklasse `me.The_F4nAt1c.APC.Core.Modules.ModuleMain` auflösen will/muss, und weder der SystemClassLoader (welcher als Delegation ClassLoader bei der verwendeten Instanziierung des URLClassLoaders verwendet wird) noch der URLClassLoader diese ModuleMain Klasse kennt. Wie wird denn ModuleMain geladen/aufgelöst? Hast du da noch mehr ClassLoader am Start, auf die aber nicht delegiert wird?
 

The_F4nat1c

Mitglied
Also sollte ich den system class loader benutzen um die Klasse zu laden.

Oder soll ich die klasse 'ModuleMain' vorher mit dem gleichen classloader also dem url class loader laden?
 

mihe7

Top Contributor
Du musst halt dafür sorgen, dass die betreffenden Klassen vom verwendeten ClassLoader bzw. einem seiner direkten/indirekten Vorfahren aufgelöst werden können.
 

mihe7

Top Contributor
Das passiert sowieso. Das Problem taucht z. B. auf, wenn Du die JARs mit zwei URLClassLoader-Instanzen lädst, die voneinander nichts wissen (z. B. nebeneinander):
Code:
    System-CL
        |
        |
   +----+---+
   |        |
 URLCL1    URLCL2
 (jar1)    (jar2)
 Basis <-- Erweiterung
Der URL-ClassLoader 2 (URLCL2) lädt jar2. Dort befindet sich nun eine Klasse, die eine andere Klasse (nämlich aus jar1) benötigt. URLCL2 leitet die Auflösung erst mal an den System-CL weiter. Der findet die Klasse nicht, daher sucht URLCL2 im jar2. Auch dort wird die Klasse nicht gefunden -> Fehler.

Anders würde das hier aussehen:
Code:
    System-CL
       |
       |
     URLCL1
       |
       |
     URLCL2
URLCL2 leitet die Auflösung erst mal an URLCL1 weiter, der wiederum an den System-CL. Der findet nichts, daher sucht URLCL1 in seinem Classpath und findet die Klasse. Alles gut.

Natürlich würde auch das hier gehen:
Code:
    System-CL
       |
       |
     URLCL
   (jar1, jar2)
 

The_F4nat1c

Mitglied
Ok danke es hat geklappt.

Nun habe ich allerdings noch ein anderes problem.
Die Geladene class extended die ModuleMain nun möchte ich zur ModuleMain casten allerdings bekomme ich dann immer einen ClassCastException.


Java:
URLClassLoader moduleLoader = new URLClassLoader(new URL[]{new URL("file:" + path)},
                    APCore.getInstance().getClass().getClassLoader());
            //CHECK MAIN CLASS
            Class clazz = moduleLoader.loadClass(des.getMain());

            Object o = clazz;

            try {

                ModuleMain mainClass = (ModuleMain) o;
               
                isValid = true;
                mainClass.onBeforePluginValidate();
               
                //VALIDATION
                mainClass.onValidate();
               
                //AFTER VALIDATION
                mainClass.afterValidate(true);
            } catch (ClassCastException e) {
                e.printStackTrace();
                isValid = false;
                return;
            }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
volcanos JavaFX-Programme nur in NetBeans selber ausführbar ! command_line: NoClassDefFoundError Allgemeine Java-Themen 39
S Compiler-Fehler NoClassDefFoundError Allgemeine Java-Themen 4
M NoClassDefFoundError Allgemeine Java-Themen 6
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
C Hilfe bei NoClassDefFoundError Allgemeine Java-Themen 14
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
Crooda Compiler-Fehler java.lang.NoClassDefFoundError bitcoinj Allgemeine Java-Themen 1
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
A Classpath LWJGL+NiftyGui und der NoClassDefFoundError Allgemeine Java-Themen 1
S java.lang.NoClassDefFoundError Allgemeine Java-Themen 5
T NoClassDefFoundError... Allgemeine Java-Themen 5
G Json-Lib NoClassDefFoundError Allgemeine Java-Themen 3
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
E NoClassDefFoundError: javax/microedition/io/Connection Allgemeine Java-Themen 2
P NoClassDefFoundError sigar Allgemeine Java-Themen 5
B NoClassDefFoundError Allgemeine Java-Themen 5
O NoClassDefFoundError Allgemeine Java-Themen 5
reibi NoClassDefFoundError abfangen Allgemeine Java-Themen 6
N NoClassDefFoundError bei JasperReports Allgemeine Java-Themen 2
G NoClassDefFoundError: java/lang/Object Allgemeine Java-Themen 4
S JOGL NoClassDefFoundError und Maven Allgemeine Java-Themen 4
G NoClassDefFoundError Allgemeine Java-Themen 3
M NoClassDefFoundError Allgemeine Java-Themen 9
E Java Fehlermeldung java.lang.NoClassDefFoundError Allgemeine Java-Themen 3
F NoClassDefFoundError Allgemeine Java-Themen 5
F An Profis: NoClassDefFoundError bei 1 von 20 Usern Allgemeine Java-Themen 16
T NoClassDefFoundError, warum? Allgemeine Java-Themen 6
Jens Hibbeler Klasse Laden, aber wie? NoClassDefFoundError? Allgemeine Java-Themen 3
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
B Stringmanipulationen beim Dateinamen Allgemeine Java-Themen 8
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
B Compiler-Fehler Probleme beim Kompilieren mit Jsoup Allgemeine Java-Themen 8
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
U Fehler beim Compillieren Allgemeine Java-Themen 13
B neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
J Jasper Report - seltame Meldung beim compilieren Allgemeine Java-Themen 3
J Linux .jar beim Start automatisch ausführen Allgemeine Java-Themen 6
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
L Compiler-Fehler Generics beim Anhängen von Predicates Allgemeine Java-Themen 1
J WARNING: An illegal reflective access operation has occurred, beim Compilieren von JasperReports, was bedeutet das ? Allgemeine Java-Themen 23
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
B Input/Output Probleme beim Ausführen von Shell-Befehlen mit Java Allgemeine Java-Themen 28
J Probleme beim einbinden von Zip4j library Allgemeine Java-Themen 6
S Seitenausrichtung beim Drucken Allgemeine Java-Themen 1
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
R Optimierung beim Vergleichen von 2 Bildern Allgemeine Java-Themen 23
F SQLite mit Java / Probleme beim INSERT Befehl Allgemeine Java-Themen 4
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
M Beim Öffnen Dialog Directory und Filetype definieren Allgemeine Java-Themen 2
G Problem beim GUI Allgemeine Java-Themen 9
A Probleme beim Verstehen einer Aufgabenstellung Allgemeine Java-Themen 11
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
J Konstruktor in JSP beim Kompilieren nicht gefunden Allgemeine Java-Themen 3
perlenfischer1984 Probleme beim Mocken Allgemeine Java-Themen 6
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
D Pivot-Wahl beim QuickSort steigert die Effizienz, eine Lüge??? Allgemeine Java-Themen 17
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
Fischkralle Beim Clean Coden an den Schnittstellen geschnitten. Allgemeine Java-Themen 10
H Beim Konstruktor "this" Allgemeine Java-Themen 4
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
Thallius Swing Merkwürdiges Verhalten beim Panel Tausch Allgemeine Java-Themen 3
Tacofan Sound beim öffnen der GUI Allgemeine Java-Themen 8
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Endlosschleife beim Verteilen von Objekten Allgemeine Java-Themen 4
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
B Fortschritt beim Schreiben einer Datei ausgeben lassen Allgemeine Java-Themen 7
J JDK installieren Das Jdk funtioniert beim Editor nicht. Allgemeine Java-Themen 3
R Verdrückt beim Sicherheitshinweis Allgemeine Java-Themen 2
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben