Gradle, Ikonli, fatJar

ThHi

Mitglied
Hi,
ich habe da ein sehr seltsames Problem beim Bauen eines fatJar mit Gradle und der Lib Ikonli.
Es funktioniert, wenn ich das Programm im Debugger starte oder mit: "gradle run"
Habe zwei Icons aus zwei unterschiedlichen Ikonli-Libs eingebunden. Die werde dann auch beide angezeigt.

Wenn ich eine FatJar baue, wird immer nur ein Icon aus der Lib die im build.gradle zuerst kommt, angezeigt. Das zweite Icon wird dann nicht gefunden und wirft eine Exception???? Habe da schon einiges probiert, (auch das 'com.github.johnrengelman.shadow'), aber immer mit dem selben Erfolg. Macht auch keine Unterschied, ob ich die Libs von einem lokalem Verzeichnis einbinde oder direkt über maven.

Hänge mal meinen src und das build.gradle an, vielleicht hat da jemand noch eine Idee dazu. Danke schon mal

sorry, für den zweiten Eintrag, wollte mein build.gradle nicht annehmen und ist dann beim Ändern passiert
 

Anhänge

  • Icon.java
    1,5 KB · Aufrufe: 0
  • Main.java
    204 Bytes · Aufrufe: 0
  • build.gradle.txt
    1,8 KB · Aufrufe: 0
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Statt Dateien einzuhängen ist es immer besser, den Code selbst zu posten. Dann kann man sich den Code direkt im Browser ansehen und muss nicht erst Dateien herunterladen um diese dann zu öffnen ... Daher bitte zukünftig den </> Knopf links oberhalb des Eingabebereiches für Code nutzen.

Was das Problem angeht: Ikonli nutzt sogenannte Services. Das ist ein Mechanismus, über den Elemente in Jar Dateien gefunden bzw. bereit gestellt werden können. Das findet sich dann in den jar Dateien in META-INF/services.

So findet sich in den jar Dateien z.B.
inflating: META-INF/services/org.kordamp.ikonli.IkonHandler
inflating: META-INF/services/org.kordamp.ikonli.IkonProvider

Ich habe mir das nicht weiter im Detail angeschaut, aber das könnte das Problem sein, wenn Du hier Dinge aus zwei jar Dateien haben willst, die über die gleichen Services gefunden werden.

Was ist das Problem im Detail:
  • Mehrere jar Dateien beinhalten die gleichen Dateien (unter services)
  • wenn Du beim fatJar einfach nur jar Dateien entpackst um es dann zusammen zu packen, dann hat eine Datei die andere überschrieben
  • das führt dazu, das nur die services bereit stehen, dessen Datei sozusagen "gewonnen" hat,

Das kann man in Gradle z.B. mit dem shadow Plugin machen. Das wäre dann etwas wie:
Code:
plugins {
    id("com.github.johnrengelman.shadow") version "8.1.1"
}

tasks.shadowJar {
    mergeServiceFiles()
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Gradle startet SpringBoot-Anwendung nicht (Build aber successfull) Tools - Maven, Gradle, Ant & mehr 1
8u3631984 In Gitlab Pipleline Dokcer Image pushen mit gradle bootBuildImage Tools - Maven, Gradle, Ant & mehr 0
N No Main Manifest Attribute trotz Eintrag bei Gradle Tools - Maven, Gradle, Ant & mehr 1
8u3631984 Gradle und NPM wie strukturieren Tools - Maven, Gradle, Ant & mehr 3
S Gradle kann Lottie Implementation nicht finden Tools - Maven, Gradle, Ant & mehr 5
Gradle build funktioniert nicht Tools - Maven, Gradle, Ant & mehr 10
Moman2022 Hauptklasse kann nicht gefunden werden gradle build Tools - Maven, Gradle, Ant & mehr 3
8u3631984 Gradle nicht benötigte Dependencies finden Tools - Maven, Gradle, Ant & mehr 3
B Gradle Terminal/Console Encoder Tools - Maven, Gradle, Ant & mehr 9
S "Wer" löscht JARs aus meinem Gradle-cache? Tools - Maven, Gradle, Ant & mehr 3
von Spotz Gradle: Warum wird das Plugin nicht geladen? Tools - Maven, Gradle, Ant & mehr 4
8u3631984 Verschachteltes Gradle Projekt Tools - Maven, Gradle, Ant & mehr 0
von Spotz Gradle: Dependencies und Plugins vom root Projekt für die child-Projekte verfügbar machen Tools - Maven, Gradle, Ant & mehr 5
J Gradle signing Plugin Tools - Maven, Gradle, Ant & mehr 0
Y Gradle finished with non-zero exit value 1 mit Gradle Tools - Maven, Gradle, Ant & mehr 1
L Gradle Ein lokales Eclipse Projekt in Gradle dependency einbinden Tools - Maven, Gradle, Ant & mehr 2
8u3631984 Gradle : Baue anderes Modul und packe es in einen Docker Container Tools - Maven, Gradle, Ant & mehr 0
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Gradle Dependencies in Module vererben Tools - Maven, Gradle, Ant & mehr 2
J [Gradle] Task Reihenfolge pusblishMaven vor codenarcTest Tools - Maven, Gradle, Ant & mehr 0
J netbeans - jasperreports - gradle - klappt nicht Tools - Maven, Gradle, Ant & mehr 0
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
L Gradle src-gen zum Classpath hinzufügen Tools - Maven, Gradle, Ant & mehr 0
N Gradle Tools - Maven, Gradle, Ant & mehr 4
W Gradle in Netbeans ... wie? Tools - Maven, Gradle, Ant & mehr 28
N Gradle für Tests 2 Frameworks Tools - Maven, Gradle, Ant & mehr 2
E Gradle Build Tools - Maven, Gradle, Ant & mehr 1
C Gradle create project within application Tools - Maven, Gradle, Ant & mehr 0
Tom299 (Gradle) Wie die JAR eines 2. Projektes "includieren" Tools - Maven, Gradle, Ant & mehr 1
Psypsy Multi-Projekt mit Gradle Tools - Maven, Gradle, Ant & mehr 1
Kr0e Best practices / Gradle und co Tools - Maven, Gradle, Ant & mehr 7

Ähnliche Java Themen

Neue Themen


Oben