Minecraft Eclipse startet Minecraft nicht?

Minecraft - Java Edition

Mika_MDF

Mitglied
Wenn ich in den Launch Configurations von Forge 1.12.2 in Eclipse kommt in der Console nur dieser Output:

[2020-12-21 11:24:50] [INFO ] Natives: C:\Users\mikab\Downloads\forge-1.12.2-14.23.5.2854-mdk\build\natives
[2020-12-21 11:24:50] [INFO ] Main Class: net.minecraft.launchwrapper.Launch
[2020-12-21 11:24:50] [INFO ] Srg2Mcp: C:\Users\mikab\Downloads\forge-1.12.2-14.23.5.2854-mdk\build\createSrgToMcp\output.srg
[2020-12-21 11:24:50] [INFO ] Extra: []
[2020-12-21 11:24:50] [INFO ] Running with arguments: [--version, 1.12, --assetIndex, 1.12, --assetsDir, C:\Users\mikab\.gradle\caches\forge_gradle\assets, --accessToken, {REDACTED}, --userProperties, [], --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker]
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at net.minecraftforge.legacydev.Main.start(Main.java:86)
at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
... 6 more
 
Laut dem Stacktrace machst Du im Konstruktor Deiner Launch Klasse (Zeile 34) etwas, das nicht geht. Du vesuchst einen AppClassLoader zu einem URLClassLoader zu casten, was nicht geht.

Ohne mehr Informationen werden wir dir hier auch nicht mehr sagen können.
 
Laut dem Stacktrace machst Du im Konstruktor Deiner Launch Klasse (Zeile 34) etwas, das nicht geht. Du vesuchst einen AppClassLoader zu einem URLClassLoader zu casten, was nicht geht.

Ohne mehr Informationen werden wir dir hier auch nicht mehr sagen können.
Zeile 34 ist übrigens diese hier: final URLClassLoader ucl = (URLClassLoader) getClass().getClassLoader();
 
Die Problematik hast Du aber verstanden?
Die Fehlermeldung hat Dir bereits gesagt: getClass().getClassLoader() liefert (in Deinem Fall) ein AppClassLoader zurück und keinen URLClassLoader.

Mehr können wir Dir auch nicht sagen, denn wir haben keine Ahnung, was Du da überhaupt machen willst. Wozu brauchst Du den ClassLoader der aktuellen Klasse und warum muss das zwingend ein URLClassLoader sein? Tut es der normale ClassLoader nicht, so dass Du ohne Cast auskommst?

Und überhaupt: Wer hat da aus welchem Grund gemeint, dass das ein URLClassLoader zurück kommen würde? Das wäre wichtig für den Weihnachtmann, damit er weiss, wem er keine Geschenke mitbringen darf und wem statt dessen mit der Rute genau so etwas abgewöhnt wird? 🙂
 
Die Problematik hast Du aber verstanden?
Die Fehlermeldung hat Dir bereits gesagt: getClass().getClassLoader() liefert (in Deinem Fall) ein AppClassLoader zurück und keinen URLClassLoader.

Mehr können wir Dir auch nicht sagen, denn wir haben keine Ahnung, was Du da überhaupt machen willst. Wozu brauchst Du den ClassLoader der aktuellen Klasse und warum muss das zwingend ein URLClassLoader sein? Tut es der normale ClassLoader nicht, so dass Du ohne Cast auskommst?

Und überhaupt: Wer hat da aus welchem Grund gemeint, dass das ein URLClassLoader zurück kommen würde? Das wäre wichtig für den Weihnachtmann, damit er weiss, wem er keine Geschenke mitbringen darf und wem statt dessen mit der Rute genau so etwas abgewöhnt wird? 🙂

Ich bin nicht so der Profi in Java. Wäre nett wenn du dir das vielleicht ja mal anschauen könntest?: https://gofile.io/d/ZvMYej
 
Ich kanns auch zum dritten Mal sagen: Du startest mit Java >= 9, unterstützt wird aber nur 8.
Das wird die einfache Variante sein, denn der Code, der die Exception wirft scheint nicht von Dir zu sein sondern sozusagen bestehender Code zu sein.

Daher wirst Du daran nichts ändern wollen.

Daher wäre meine Empfehlung auch, die aktuellen Java Versionen ggf. deinstallieren und dann nur das OpenJDK 8 installieren. Oder auch gerne parallel: Es reicht, wenn Du das OpenJDK 8 herunter lädst und entpackst und dann vor dem Start des Servers / Clients den Pfad anpasst und ggf. JAVA_HOME setzt.


Oder wenn Du als IDE IntelliJ nutzt: Das kann das notwendige JDK auch separat bereit stellen beim öffnen des Gradle Projekts.... So läuft es gerade bei mir.
 
Java:
[2020-12-23 20:57:26] [INFO   ] Natives: C:\Users\Taknax-Bo\Minecraft\Taknax\Tax\build\natives
[2020-12-23 20:57:26] [INFO   ] Main Class: net.minecraft.launchwrapper.Launch
[2020-12-23 20:57:26] [INFO   ] Srg2Mcp: C:\Users\Taknax-Bo\Minecraft\Taknax\Tax\build\createSrgToMcp\output.srg
[2020-12-23 20:57:26] [INFO   ] Extra: []
[2020-12-23 20:57:26] [INFO   ] Running with arguments: [--version, 1.12.2, --assetIndex, 1.12, --assetsDir, C:\Users\Taknax-Bo\.gradle\caches\forge_gradle\assets, --accessToken, {REDACTED}, --userProperties, [], --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker]
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at net.minecraftforge.legacydev.Main.start(Main.java:86)
    at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
    at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    ... 6 more




Benutze ich auch die Falsche Java version? mrBrown?
 
[CODE lang="java" title="Gleiches Problem"][2020-12-23 20:57:26] [INFO ] Natives: C:\Users\Taknax-Bo\Minecraft\Taknax\Tax\build\natives
[2020-12-23 20:57:26] [INFO ] Main Class: net.minecraft.launchwrapper.Launch
[2020-12-23 20:57:26] [INFO ] Srg2Mcp: C:\Users\Taknax-Bo\Minecraft\Taknax\Tax\build\createSrgToMcp\output.srg
[2020-12-23 20:57:26] [INFO ] Extra: []
[2020-12-23 20:57:26] [INFO ] Running with arguments: [--version, 1.12.2, --assetIndex, 1.12, --assetsDir, C:\Users\Taknax-Bo\.gradle\caches\forge_gradle\assets, --accessToken, {REDACTED}, --userProperties, [], --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker]
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at net.minecraftforge.legacydev.Main.start(Main.java:86)
at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
... 6 more
[/CODE]


Benutze ich auch die Falsche Javaversion mrBrown?


Sry für den Doppelpost. War absolut nicht meine Intention.
 
Also. Wenn ich cmd ausführe und java -version eingebe kriege ich die 1.8.0_275
Wenn ich die jdk prüfe mit javac -version erhalte ich:
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.275-b01, mixed mode)

Weil ich es im cmd prüfen kann habe ich auch den Path und Home richtig gesetzt und die versionen müssten auch stimmen.
 
Ausgeführt wurde es hier auf jeden Fall mit Java 9 oder neuer, erkennt man am genutzen Modulsystem:

[CODE lang="java" highlight="7-10"]Natives: C:\Users\Taknax-Bo\Minecraft\Taknax\Tax\build\natives
[2020-12-23 20:57:26] [INFO ] Main Class: net.minecraft.launchwrapper.Launch
[2020-12-23 20:57:26] [INFO ] Srg2Mcp: C:\Users\Taknax-Bo\Minecraft\Taknax\Tax\build\createSrgToMcp\output.srg
[2020-12-23 20:57:26] [INFO ] Extra: []
[2020-12-23 20:57:26] [INFO ] Running with arguments: [--version, 1.12.2, --assetIndex, 1.12, --assetsDir, C:\Users\Taknax-Bo\.gradle\caches\forge_gradle\assets, --accessToken, {REDACTED}, --userProperties, [], --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker]
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at net.minecraftforge.legacydev.Main.start(Main.java:86)
at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
... 6 more[/CODE]
 
Ich habe es befürchtet. Ich habe nicht soviel Erfahrung mit Eclipse. Jedoch nutzt er einen internen jdk? Kann ich es konfigurieren? Wenn die Quelle nicht eine interne java app ist. Welche ist es?
Vielen Dank für die Antworten. Manchmal ist es einfach was ziemlich einfaches, welches übersehen wird.

PS: Runtime JRE 1.8 ist bei Eclipse in den Run Configs ausgewählt.
 
Zuletzt bearbeitet:
Also wenn Du Dein Projekt betrachtest in Eclipse, dann solltest Du im Projekt auch die verwendete JRE angezeigt bekommen. Das sieht dann in der Regel so aus:
EclipseScreenshot.png

Sowas solltest Du also auch bei Dir finden. Oder eben in den Project Settings:
EclipseScreenshot.png

Wichtig ist dabei, dass Eclipse da eben KEINEN Modulepath anzeigt. Das wäre auch ein sicheres Zeichen, dass Eclipse ein JDK 9 oder höher verwenden möchte ...

Auf das JRE System Library kann man ansonsten auch gehen und dann den Edit... Knopf drücken um das anzupassen. Dann kann man entweder ein Execution Environment wählen oder ein installiertes JDK.
 
Es sieht genau gleich aus. Alles. 🙁 Ich habe auch schon die umstellung auf execution sowie auch die installierte ausgewählt und gestartet. Leider mit dem gleichen ergebnis. Jedoch fällt mir inder obersten zeile auf, dass ein path "p2......" ausgeführt wird. Dies ist nicht der path von meinem java.



launch.png
 
Vermutlich kennt Eclipse deine 1.8er JDKs nicht. Eclipse hat unter .p2 ein eigenes JDK mit installiert. Und wenn Eclipse nur das eine JDK kennt, dann nutzt es das für alles.

Du kannst zum einen in Eclipse konfigurieren, welches JDK für welche Java "Execution Environments" verwendet werden soll.

Dazu einfach einmal Windows -> Preferences auswählen.

Java -> Installed JREs dein JRE 1.8 hinzufügen (Add ... auswählen und dann Verzeichnis wählen und so ...)
(Dabei evtl. den vorhandenen Eintrag umbenennen. Der heißt vermutlich einfach nur "jre" - und den kannst Du zu "OpenJDK 15.0.1" umbenennen oder so.... Dann kann man es besser auseinander halten ... natürlich bei Deinem Hinzufügen ggf. auch den Namen so anpassen, so dass klar ist, was dahinter ist!)

Dann unter Java -> Installed JREs -> Execution Environments das JavaSE-1.8 auswählen und dann das neue JDK wählen. Das sollte dann dafür sorgen, dass das 1.8er (Open)JDK genommen wird für JavaSE-1.8 Projekte.

In den JavaDE-1.8 Projekten könntest Du natürlich statt dem Execution Environment einfach ein festes JDK wählen ... Das ginge natürlich auch.
 
Mit dieser exakten Beschreibung, meinen exakten Fehler gelöst. Danke euch beiden. Ich werde weiterhin in diesem hilfreichen Forum sein. Wieso Eclipse einfach ein internen nahm, habe ich nicht verstanden, aber Minecraft startet tadellos. Danke nohcmals.
Wünsche alles Gute und Gesundheit.
 
Also nur um es noch einmal zu erläutern:

Dein Projekt hat ein Execution Environment ausgewählt. JavaSE-1.8 ist sozusagen eine Art Gruppierung.

Bei der Installation hat Eclipse ein JDK mit installiert. Das ist unter Plugins zu finden (Und die sind in diesem .p2 Ordner unter plugins). Eclipse klennt von Hause aus erst einmal nur dieses eine JDK. (Zu sehen in Installed JREs)

Daher hat Eclipse immer das 15er OpenJDK zur Ausführung genutzt. Das ist also das Standard Verhalten
Andere installierte JDKs hat Eclipse nicht gesucht und daher auch nicht eingebunden. Und Eclipse greift daher auch nicht auf diese zurück.

Daher: JDKs nach dem Installieren eintragen in Eclipse und entweder bei den Execution Environments zuweisen oder in Projekten direkt ein JDK auswählen. (Beim sharen von Projekten kann dies aber zu Problemen führen. Dafür sind ja die Execution Environments mit da ...)


Ich kann den Aufbau nachvollziehen, aber mir gefällt es auch nicht. Alleine schon, dass ein "Update Software" das bei mir aktualisiert hat - ich habe also neben meinem 14.0.2 noch ein 15.0.1 installiert bekommen. Das 14.02 ist noch immer da, aber als installed Plugin wird das irgendwie nicht geführt. Und in Installed JREs ist nur das 14.0.2er zu finden und nicht das neue 15.01 ... Also Eclipse halte ich für schlich zu kompliziert und zu unübersichtlich. Und solche schlechten Umsetzungen machen es in meinen Augen für Anfänger schlicht untauglich. IntelliJ in der Community Edition ist frei verfügbar ... Netbeans soll auch besser sein, wobei ich da keine Erfahrungswerte habe....

Und dieses Forge kommt ja als Gradle Projekt mit Gradle Wrapper. Da kann also jede IDE benutzt werden. Ggf. wäre es für Anfänger besser, da mit IntelliJ oder so ran zu gehen ... Das aber nur als kleine Anregung.
 
Ich habe nur Eclipse verwendet, weil es das bekannteste war. Ich werde definitiv IntelliJ ausprobieren. Wenn es auch noch Einsteigerfreundlich ist, umso besser. Ich hoffe ich kann mich bei fragen an die Community wenden?
 
Ich habe nur Eclipse verwendet, weil es das bekannteste war. Ich werde definitiv IntelliJ ausprobieren. Wenn es auch noch Einsteigerfreundlich ist, umso besser. Ich hoffe ich kann mich bei fragen an die Community wenden?
Ja klar, mit Fragen bist Du immer herzlich willkommen. Und IntelliJ nutzen hier auch mehrere Leute, so dass Du bestimmt auch bei IntelliJ ebenso Unterstützung bekommen wirst.

Und einfach ausprobieren - wenn es Dir nicht gefällt, ist das auch kein Problem. Eclipse ist nicht wirklich schlecht (Nicht, dass dies falsch rüber gekommen ist). Entwicklungsumgebungen haben halt nur eine sehr große Komplexität und da ist es natürlich immer einfach, etwas zu finden, das einem nicht gefällt. Und vieles ist Geschmackssache. Kann man nicht anders sagen...
 

Zurück
Oben