MediathekView icon indicating copy to clipboard operation
MediathekView copied to clipboard

JAR: NoClassDefFoundError

Open harmathy opened this issue 6 months ago • 6 comments

Unter Linux baue ich den Code und rufe das JAR auf:

./mvnw clean install
java -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseStringDeduplication -XX:MaxRAMPercentage=25 --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED -DexternalUpdateCheck -jar ./target/MediathekView.jar

Fehler:

Error: Unable to initialize main class mediathek.Main
Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/Layout

Nach einem git bisect tritt das Problem erstmal mit Commit 25934bc4257a8f3319a08158766b00e44ceb637c auf.

harmathy avatar Jun 11 '25 08:06 harmathy

Versuch mal folgenden Aufruf: java -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseStringDeduplication -XX:MaxRAMPercentage=50.0 --enable-native-access=ALL-UNNAMED --add-modules jdk.incubator.vector --add-exports=java.desktop/sun.swing=ALL-UNNAMED --add-opens java.desktop/sun.awt.X11=ALL-UNNAMED -ea -cp "MediathekView.jar:dependency/*" mediathek.Main

MuenchenSued avatar Jun 11 '25 10:06 MuenchenSued

@MuenchenSued ja, das funktioniert. Das ist der entscheidende Hinweis. Bislang waren die Dependencies alle in dem Jar-File enthalten.

harmathy avatar Jun 11 '25 14:06 harmathy

@harmathy sagte: Bislang waren die Dependencies alle in dem Jar-File enthalten.

Ich hab mich auch gefragt, weshalb im Changelog zu MV 14.3.0 bloss das Folgende stand, was ja offensichtlich nicht genügt:

Neuer Startparameter notwendig für Selbstbauer: --add-exports=java.desktop/sun.swing=ALL-UNNAMED muss hinzugefügt werden.

Im ReadMe sollten allerdings die korrekten Startparameter drin stehen.

styroll avatar Jun 11 '25 18:06 styroll

@styroll Ich habe einen Pull-Request #796 eröffnet, der das Problem behebt. Damit kann man das Jar-File wie bisher starten.

harmathy avatar Jun 11 '25 18:06 harmathy

Ich habe Deine Änderung in die nächste Nightly eingebaut. Leider ist dein PR von masterabgeleitet, die WE erfolgt jedoch auf develop, daher habe ich diesen nicht gemerged. Er wird aber regulär mit dem nächsten Update geschlossen. Vielen Dank für die Änderung, diesen Fix kannte ich so nicht.

derreisende77 avatar Jun 13 '25 13:06 derreisende77

Das initiale Problem entstand durch die Nutzung der JIde OSS Bibliothek welche sich nicht mit dem shading vertrug.

derreisende77 avatar Jun 13 '25 13:06 derreisende77

Hi! Ich package dieses Projekt fuer Arch Linux. In Version 14.3.1 habe ich das selbe Problem wie hier beschrieben und bekomme die Applikation gar nicht mehr zu laufen.

Sind diese Aenderungen bereits released?

dvzrv avatar Aug 19 '25 21:08 dvzrv

Auch nach Nutzung des Patches aus #796 bekomme ich folgendes in 14.3.1:

java -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseStringDeduplication -XX:MaxRAMPercentage=25 --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED --add-exports=java.desktop/sun.swing=ALL-UNNAMED --enable-native-access=ALL-UNNAMED --
add-modules jdk.incubator.vector -DexternalUpdateCheck -jar /usr/share/java/mediathekview/MediathekView.jar /home/user/.local/share/mediathekview
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
WARNING: Using incubator modules: jdk.incubator.vector
Error: Unable to initialize main class mediathek.Main
Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/Layout

dvzrv avatar Aug 21 '25 07:08 dvzrv