JavaFX Desktop-Icon anzeigen

hk

Bekanntes Mitglied
Ich habe ein Maven JavaFX-Programm (image) bei dem ich ein Desktop-Icon anzeigen möchte. Wie tut man das?
 

hk

Bekanntes Mitglied
Das klingt jetzt erst einmal nach einem Installer, den Du haben willst.

Evtl. reicht dazu schon die Möglichkeiten von JPackage aus: https://docs.oracle.com/en/java/javase/24/jpackage/manage-installation.html

Ich selbst nutze JPackage aber nur, um das eigentliche Package zu bauen. Installer sind dann separat und werden von mir direkt gehandhabt. Dazu nutzte ich in der Vergangenheit WiX (Windows Installer XML) http://wixtoolset.org/
Ich habe WIX 3.14 und wenn ich folgende Anweisung ausführe dann bekomme ich eine exe-Datei - mit Icon - welche beim Start kurz ein Fenster zeigt und dann nichts mehr tut.
jpackage --name satan --icon "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main/target/classes/Satan_01.ico" --type exe --win-shortcut --app-image "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\jpackage\satan"

Wenn ich nun die folgende Anweisung ausführe bekomme ich die Fehlermeldung:
jpackage --name satan --icon "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\classes\Satan_01.ico" --type exe --app-version 1.0 --main-class aut.heinz.Main --main-jar satan.jar --input "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\classes" --dest target/jpackage
Bundler EXE-Installationsprogrammpackage aufgrund eines Konfigurationsproblems übersprungen: Die konfigurierte Haupt-JAR-Datei ist im Eingabeverzeichnis nicht vorhanden satan.jar
Empfehlung zur Behebung: Die Haupt-JAR-Datei muss relativ zum Eingabeverzeichnis (nicht als absoluter Pfad) angegeben werden und muss in diesem Verzeichnis vorhanden sein

Im Verzeichnis target steht die satan-1.0.jar.
 

hk

Bekanntes Mitglied
Danke für den Hinweis. Aber da habe ich mich beim Kopieren geirrt. Hier die richtige Anweisung und der Fehler:
jpackage --name satan --icon "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\classes\Satan_01.ico" --type exe --app-version 1.0 --main-class aut.heinz.Main --main-jar satan-1.0.jar --input "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\classes" --dest target/jpackage
Bundler EXE-Installationsprogrammpackage aufgrund eines Konfigurationsproblems übersprungen: Die konfigurierte Haupt-JAR-Datei ist im Eingabeverzeichnis nicht vorhanden satan-1.0.jar
Empfehlung zur Behebung: Die Haupt-JAR-Datei muss relativ zum Eingabeverzeichnis (nicht als absoluter Pfad) angegeben werden und muss in diesem Verzeichnis vorhanden sein
 

Oneixee5

Top Contributor
In Windows könnte man PowerShell verwenden, wenn man keinen Installer hat. In Linux Desktopumgebungen erstellt man im richtigen Ordner einfach eine myapp.desktop - Datei (Textdatei) mit Nutzerrechten.

Code:
$WshShell = New-Object -COMObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut(„$Home\Desktop\MyApp.lnk“)
$Shortcut.TargetPath = „%SystemDrive%\Program Files (x86)\MyApp\MyApp.exe“
$Shortcut.Save()

PowerShell-Skript erstellen und als Set-Shortcut.PS1 in $PWD speichern:

Code:
param ( [string]$SourceExe, [string]$DestinationPath )

Code:
$WshShell = New-Objekt -COMObjekt WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()

Aufruf:

Code:
Set-Shortcut „%SystemDrive%\Program Files (x86)\MyApp\MyApp.exe“ „$Home\Desktop\MyApp.lnk“

Wenn Argumente übergeben werden sollen:

Parameter für die Verknüpfung
Code:
$Shortcut.Arguments = „/argument=wert“

...vor $Shortcut.Save().

... modifizierte Version von Set-Shortcut.PS1:
Code:
param ( [string]$SourceExe, [string]$ArgumentsToSourceExe, [string]$DestinationPath )

$WshShell = New-Object -COMObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()

Akzeptiert Argumente als seinen zweiten Parameter.

Erstelle ein Batch-Skript
Speichern als run_as_admin.bat. Mit diesem Batch-Skript wird das PowerShell-Skript mit erhöhten Rechten ausgeführt.

Code:
@echo aus
setlocal
set scriptPath=%~dp0Set-Shortcut.PS1
# Check if the script is running with admin privileges
openfiles >nul 2>&1
if '%errorlevel%' == '0' (
    # If already running with admin privileges, run the PowerShell script
    powershell -ExecutionPolicy Bypass -File "%scriptPath%"
) else (
    # If not running with admin privileges, relaunch the batch file with elevated privileges echo requesting admin privileges...
    powershell -Command "Start-Process cmd -ArgumentList '/c %~s0' -Verb RunAs"
)

Desktop Icon aus Java erstellen (muss mit erhöhten Rechten laufen):
Java:
ProcessLauncher launcher = new ProcessLauncher();
String scriptPath = "run_as_admin.bat"; // Adjust the path to batch script
ProcessResult result = launcher.runScript(scriptPath);
 

hk

Bekanntes Mitglied
In Windows könnte man PowerShell verwenden, wenn man keinen Installer hat. In Linux Desktopumgebungen erstellt man im richtigen Ordner einfach eine myapp.desktop - Datei (Textdatei) mit Nutzerrechten.
Ich habe Windows und setze mit der Power-Shell folgende Anweisung ab um meiner Anwendung ein Desktop-Icon zu geben.

jpackage --name satan --icon "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main/target/classes/Satan_01.ico" --type exe --win-shortcut --app-image "D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\jpackage\satan"

Es wird eine satan-1.0.exe im Verzeichnis .../target/jpackage/satan erzeugt welche beim Start kurz ein Windows-Fenster zeigt und dann nichts mehr. Daher meine Frage was ich tun kann um das Problem zu erkennen.
 

hk

Bekanntes Mitglied
Also ich baue mit JPackage immer nur ein App-Image, für welches ich dann selbst den Installer (so benötigt) erstelle. Die Möglichkeiten von JPackage sind halt diesbezüglich viel zu eingeschränkt.

Wie man im xml dann bei WIX ein Shortcut erstellen kann, würde dann z.B. hier beschrieben:
Ich weis nicht ob ich mich richtig ausgedrückt habe. Ich habe eine Maven-JavaFX-Anwendung mit einer IDE (NetBeans) erstellt und möchte ihr ein Desktop-Icon hinzufügen. Das habe ich mit PowerShell und der jpackage Anweisung versucht wobei die erstellte EXE nicht funktioniert. Ich weis auch nicht ob ich damit am richtigen Weg bin.
 

KonradN

Super-Moderator
Mitarbeiter
Also nur einmal zum Verständnis - Du hast mehrere Dinge, die ablaufen bei dem Projekt (Vereinfacht dargestellt - da kann es noch deutlich mehr Schritte geben wie Source-Generierungen, Tests, ...):
  • Die Sourcen werden übersetzt. Das Ergebnis sind dann erst einmal .class Dateien und es werden Ressourcen kopiert.
  • Die fertigen Dinge werden dann zusammen gepackt in einem jar File (bei Dir, so ich es richtig verstanden habe)
  • Auf dem Ergebnis rufst Du dann JPackage auf. Das Ergebnis ist dann entweder ein App Image oder eben ein Installer.

Nun sprichst Du von einem Desktop Icon, das Du gerne haben willst. Das hat mit diesem Übersetzungslauf erst einmal nichts zu tun. Das wäre dann eine Sache des Installers. So Du also einen Installer erzeugst (Etwas in der Art hast Du ja auch schon einmal erwähnt), dann wäre das die Stelle, bei der man ansetzen müsste.

Generell ist es aber so, dass Du auf immer mehr Plattformen Probleme hast, wenn Du kein eigenes Binary hast. macOS wäre so ein Beispiel aber das gibt es auch unter Windows und Linux. Du willst halt der Anwendung ggf. Rechte geben. Daher sollte es kein java.exe sein, das berechtigt wird, sondern eben ein myapp.exe. (Um es mal Umgangssprachlich aus Windows Sicht zu beschreiben).

Daher einfach einmal den Ansatz von mir:
- Ich baue Projekte mit Maven. Da gehört dann auch der JPackage Aufruf dazu. Wie so ein Projekt dann aussehen kann, siehst Du in dem Template Projekt JavaFXMavenApp. Wenn man dort den Weg über JPackage geht (Profil image), dann bekommst Du ein Verzeichnis mit der Anwendung. Da ist dann u.a. eine exe dabei sowie viele Dateien/Ordner drumherum, die für die Anwendung notwendig sind.

Das ist dann ein Ablauf, bei dem absolut nichts mit Installer erstellen dabei ist! Wenn Du die Anwendung weiter geben willst, dann musst Du Dir selbst überlegen, was Du mit dem erstellten Ergebnis machen willst. Das kann unter Windows einfach ein zip File sein. Unter macOS wäre es statt zip ein DMG mit der Anwendung (und ggf. noch etwas drumherum: Es gibt ein Softlink zu /Applications, das erstelle AppImage und ein Hintergrundbild auf dem man dann einen Pfeil hat von dem AppImage zu Applications) .....

Und hier wäre dann mein Ansatz: Für Windows würde ich selbst ein MSI erstellen mittels WIX. Das wäre also kein JPackage Aufruf. Das wäre ein selbst erstelltes XML mit der Beschreibung und ein Aufruf von WIX, der dann das MSI baut. Das ist also ein Schritt, der mit Maven / Java nichts mehr zu tun hat. (Klar, Maven kannnatürlich den entsprechenden Aufruf enthalten.)
 

KonradN

Super-Moderator
Mitarbeiter
Also wenn ich es richtig verstanden habe, dann ist das Problem ja der erzeugte Installer - nicht das erzeugte App Image. Er erzeugt ja ein App Image, welches dann unter target/jpackage/satan zu liegen scheint und da will er dann in einen Installer erzeugen.

Wenn man sowas per jpackage machen will, dann würde ich erst einmal -type msi verwenden. Dann hat man ein klar beschriebenes Format und kein Binary, d.h. man kann (mit teilweise freier Software) da hinein schauen um zu sehen, was da drin steckt. Und man hat dann msiexec Aufrufe und entsprechende Logs, die man auswerten kann bei Problemen mit der Installation (Wobei die Logs teilweise schwer zu lesen und auszuwerten sind.)

Was man ggf. probieren kann ist ein --win-console um zu sehen, ob die erzeugte exe dann auch auf der Konsole bleibt um da dann Fehlermeldungen lesen zu können. Ich kenne das aber halt nur bei der Erzeugung der App Images.
 

hk

Bekanntes Mitglied
Daher einfach einmal den Ansatz von mir:
- Ich baue Projekte mit Maven. Da gehört dann auch der JPackage Aufruf dazu. Wie so ein Projekt dann aussehen kann, siehst Du in dem Template Projekt JavaFXMavenApp. Wenn man dort den Weg über JPackage geht (Profil image), dann bekommst Du ein Verzeichnis mit der Anwendung. Da ist dann u.a. eine exe dabei sowie viele Dateien/Ordner drumherum, die für die Anwendung notwendig sind.
Genau das habe ich gemacht. Mit deiner Pom aus JavaFXMavenApp. Daher habe ich eine lauffähige EXE die funktioniert. Diese hat jedoch das Standard-Icon von Windows am Desktop, und dieses will ich durch ein eigenes Icon ersetzen. Dabei brauche ich Hilfe (was ist ein geeignetes Tool, wie ist die Vorgangsweise).
 

KonradN

Super-Moderator
Mitarbeiter
Genau das habe ich gemacht. Mit deiner Pom aus JavaFXMavenApp. Daher habe ich eine lauffähige EXE die funktioniert. Diese hat jedoch das Standard-Icon von Windows am Desktop, und dieses will ich durch ein eigenes Icon ersetzen. Dabei brauche ich Hilfe (was ist ein geeignetes Tool, wie ist die Vorgangsweise).
Ok, also geht es Dir nicht um ein Shortcut (Icon) auf dem Desktop zum starten der Anwendung sondern einfach nur darum, dass Du das Icon der Anwendung anpassen möchtest von der erzeugten exe?

Dazu kannst Du einfach in der Configuration des Akman JPackage Plugins das icon setzen mit etwas wie:
XML:
<icon>config/jpackage/launcher.ico</icon>

Der Pfad darf keine Sonderzeichen oder Umlaute enthalten. Siehe https://akman.github.io/jpackage-maven-plugin/jpackage-mojo.html
 

hk

Bekanntes Mitglied
Dazu kannst Du einfach in der Configuration des Akman JPackage Plugins das icon setzen mit etwas wie:
Ich finde in der POM ein
HTML:
<plugin>
   <groupId>com.github.akman</groupId>
    ...

ist das die richtige Stelle und wo innerhalb? Oder muss ich einen <addlaunschers> einbauen? in einen eigenen <plugin> ? Und mein Icon steht in den Ressourcen, etwa so ?
HTML:
<icon>$‍{project.basedir}/config/jpackage/resources/appname.ico</icon>
 

KonradN

Super-Moderator
Mitarbeiter
Ja, das wäre der Bereich. Das addlaunchers ist nur wichtig, wenndu mehrere Starter brauchst. Das Icon kann direkt unter configurationgeschrieben werden für den Standard launcher.
 

hk

Bekanntes Mitglied
Ja, das wäre der Bereich. Das addlaunchers ist nur wichtig, wenndu mehrere Starter brauchst. Das Icon kann direkt unter configurationgeschrieben werden für den Standard launcher.
Das hat nicht funktioniert
HTML:
<plugin>
                        <groupId>com.github.akman</groupId>
                        <artifactId>jpackage-maven-plugin</artifactId>
                        <version>${jpackage.maven.plugin}</version>
                        <configuration>
                            <icon>$‍{project.basedir}/resources/satan.ico</icon>    <!-- von mir für Icon -->
                            <name>${appName}</name>
                            <type>IMAGE</type>
                            <mainclass>${main.class}</mainclass>
                            <input>${project.build.directory}/modules</input>
                            <mainjar>${jar.filename}.jar</mainjar>
                        </configuration>
                        ...
Fehlermeldung:
Code:
[INFO] --- maven-dependency-plugin:3.7.1:copy (copy) @ satan ---
[INFO] Configured Artifact: aut.heinz:satan:1.0:jar
[INFO] Copying artifact 'aut.heinz:satan:jar:1.0' (D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\satan-1.0.jar) to D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\modules\satan-1.0.jar
[INFO]
[INFO] --- jpackage-maven-plugin:0.1.5:jpackage (default) @ satan ---
[INFO] Version of [jpackage]: 21.0.5
[WARNING] The main module descriptor not found
[ERROR]
Exit code: 1
[ERROR]
Command line was: cmd.exe /X /C ""C:\Program Files\Java\jdk-21.0.5\bin\jpackage.exe" @D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\jpackage.opts"
[ERROR]
Command options was:
# jpackage
--dest D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\jpackage
--type app-image
--name 'satan'
--icon D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\$‍{project.basedir}\resources\satan.ico
--input D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\modules
--main-jar 'satan-1.0.jar'
--main-class aut.heinz.Main
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  24.979 s
[INFO] Finished at: 2025-06-10T09:19:26+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.github.akman:jpackage-maven-plugin:0.1.5:jpackage (default) on project satan: Error: Tool execution failed [jpackage] with exit code: 1 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.akman:jpackage-maven-plugin:0.1.5:jpackage (default) on project satan: Error: Tool execution failed [jpackage] with exit code: 1
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
 

KonradN

Super-Moderator
Mitarbeiter
Wenn Du Dir die erzeugte Kommandozeile anschaust, dann siehst Du direkt, dass die die Angabe des project.basedir nicht brauchst. Du siehst ja, wie er aus dem angegeben Wert den Parameter für --icon aufbaut.
 

hk

Bekanntes Mitglied
Wenn Du Dir die erzeugte Kommandozeile anschaust, dann siehst Du direkt, dass die die Angabe des project.basedir nicht brauchst. Du siehst ja, wie er aus dem angegeben Wert den Parameter für --icon aufbaut.
Habe ich auch schon probiert:
Code:
<plugin>
                        <groupId>com.github.akman</groupId>
                        <artifactId>jpackage-maven-plugin</artifactId>
                        <version>${jpackage.maven.plugin}</version>
                        <configuration>
                            <icon>resources/satan.ico</icon>     <!-- von mir für Icon -->
                            <name>${appName}</name>
                            <type>IMAGE</type>
                            <mainclass>${main.class}</mainclass>
                            <input>${project.build.directory}/modules</input>
                            <mainjar>${jar.filename}.jar</mainjar>
                        </configuration>
Fehlermeldung:
Code:
[INFO] --- jpackage-maven-plugin:0.1.5:jpackage (default) @ satan ---
[INFO] Version of [jpackage]: 21.0.5
[WARNING] The main module descriptor not found
[ERROR]
Exit code: 1
[ERROR]
Command line was: cmd.exe /X /C ""C:\Program Files\Java\jdk-21.0.5\bin\jpackage.exe" @D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\jpackage.opts"
[ERROR]
Command options was:
# jpackage
--dest D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\jpackage
--type app-image
--name 'satan'
--icon D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\resources\satan.ico
--input D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\target\modules
--main-jar 'satan-1.0.jar'
--main-class aut.heinz.Main
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  25.460 s
[INFO] Finished at: 2025-06-10T10:40:06+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.github.akman:jpackage-maven-plugin:0.1.5:jpackage (default) on project satan: Error: Tool execution failed [jpackage] with exit code: 1 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.akman:jpackage-maven-plugin:0.1.5:jpackage (default) on project satan: Error: Tool execution failed [jpackage] with exit code: 1
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
 

KonradN

Super-Moderator
Mitarbeiter
Dann zeig einmal die ganze pom. Und da es um Modul-Beschreibungen geht: Hast Du module-info.java Dateien in Deinem Projekt? (Sollte keine vorhanden sein, es gibt Probleme, wenn Du eine Modulbeschreibung dabei haben solltest.) Und die Datei gibt es und zwar genau an dem Ort und in der Gross-/Kleinschreibung:
D:\Heinz\EigeneProgrammeSource\NetBeansProjects\Satanspatience\JavaFXMavenApp-main\resources\satan.ico

Ansonsten kannst Du mir auch gerne mal Zugriff auf Dein Projekt geben - dann schaue ich es mir direkt an und schaue, woran der Fehler liegen könnte.
 

hk

Bekanntes Mitglied
Und da es um Modul-Beschreibungen geht: Hast Du module-info.java Dateien in Deinem Projekt?
Nein, habe keine module-info.java im Projekt. Wie komme ich dazu? Dann noch die ganze POM:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>aut.heinz</groupId>
    <artifactId>satan</artifactId>
    <version>1.0</version>

    <organization>
        <name>Heinz Koeck</name>
    </organization>

    <properties>
        <!-- Application Properties -->
        <link.name>${project.artifactId}</link.name>
        <launcher>${project.artifactId}</launcher>
        <appName>${project.artifactId}</appName>
        <main.class>aut.heinz.Main</main.class>
        <java.version>21</java.version>
        <required.maven.version>3.8.6</required.maven.version>
        <jar.filename>${project.artifactId}-${project.version}</jar.filename>

        <!-- Dependency versions -->
        <javafx.version>21.0.5</javafx.version>
        <jetbrains.annotations.version>24.1.0</jetbrains.annotations.version>
        <junit.version>5.10.2</junit.version>
        <lombok.version>1.18.34</lombok.version>
        <mockito.version>5.12.0</mockito.version>

        <!-- Plugin dependencies -->
        <codehaus.version.plugin>2.17.1</codehaus.version.plugin>
        <javafx.maven.plugin>0.0.8</javafx.maven.plugin>
        <jpackage.maven.plugin>0.1.5</jpackage.maven.plugin>
        <maven.clean.plugin>3.4.0</maven.clean.plugin>
        <maven.compiler.plugin>3.13.0</maven.compiler.plugin>
        <maven.dependency.plugin>3.7.1</maven.dependency.plugin>
        <maven.deploy.plugin>3.1.2</maven.deploy.plugin>
        <maven.enforcer.plugin>3.5.0</maven.enforcer.plugin>
        <maven.install.plugin>3.1.2</maven.install.plugin>
        <maven.jar.plugin>3.4.2</maven.jar.plugin>
        <maven.javadoc.plugin>3.7.0</maven.javadoc.plugin>
        <maven.project.info.reports.plugin>3.6.2</maven.project.info.reports.plugin>
        <maven.resources.plugin>3.3.1</maven.resources.plugin>
        <maven.shade.plugin>3.6.0</maven.shade.plugin>
        <maven.site.plugin>4.0.0-M15</maven.site.plugin>
        <maven.surfire.plugin>3.3.1</maven.surfire.plugin>
        <moditect.maven.plugin>1.0.0.RC2</moditect.maven.plugin>
        <maven.pmd.plugin>3.24.0</maven.pmd.plugin>
        <spotbugs.maven.plugin>4.8.6.2</spotbugs.maven.plugin>
        <spotbugs.version>4.8.6</spotbugs.version>

        <!-- other properties -->
        <pmd.target>pmd</pmd.target>  <!-- Set to 'pmd' if pmd should not fail on issues. Set to 'check' if you want build to fail when issues found -->
        <spotbugs.target>spotbugs</spotbugs.target> <!-- Set to 'spotbugs' if spotbugs should not fail on issues. Set to 'check' if you want build to fail when issues found -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <maven.compiler.release>${java.version}</maven.compiler.release>

    </properties>

    <dependencies>
        <!-- JavaFX dependencies -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-graphics</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-web</artifactId>
            <version>${javafx.version}</version>
        </dependency>

        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- JUnit 5 -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- Mockito -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>${mockito.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-junit-jupiter</artifactId>
            <version>${mockito.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- Dependency used for @NotNull / @Nullable -->
        <dependency>
            <groupId>org.jetbrains</groupId>
            <artifactId>annotations</artifactId>
            <version>${jetbrains.annotations.version}</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>

    <build>
        <!-- von mir für resourcen verwendung eingefügt -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
         <!-- End meiner Einfügung -->
        
        <finalName>${jar.filename}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>${maven.enforcer.plugin}</version>
                <executions>
                    <execution>
                        <id>enforce-versions</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>${required.maven.version}</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.plugin}</version>
                <configuration>
                    <release>${java.version}</release>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>${maven.clean.plugin}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>${maven.deploy.plugin}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>${maven.install.plugin}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven.jar.plugin}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>${maven.resources.plugin}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>${maven.site.plugin}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven.surfire.plugin}</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <version>${spotbugs.maven.plugin}</version>
                <dependencies>
                    <!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs -->
                    <dependency>
                        <groupId>com.github.spotbugs</groupId>
                        <artifactId>spotbugs</artifactId>
                        <version>${spotbugs.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>${spotbugs.target}</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- pmd funktioniert mit jdk 23 nicht -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${maven.pmd.plugin}</version>
                <configuration>
                    <minimumTokens>100</minimumTokens>
                    <targetJdk>${java.version}</targetJdk>
                    <linkXRef>false</linkXRef>
                    <rulesets>
                        <ruleset>pmd-ruleset.xml</ruleset>
                    </rulesets>
                </configuration>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>${pmd.target}</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>       

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>${codehaus.version.plugin}</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>display-dependency-updates</goal>
                            <goal>display-plugin-updates</goal>
                            <goal>display-property-updates</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${maven.javadoc.plugin}</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- JavaFX Plugin to start application -->
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>${javafx.maven.plugin}</version>
                <configuration>
                    <mainClass>${main.class}</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>${maven.project.info.reports.plugin}</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>index</report>
                            <report>dependencies</report>
                            <report>licenses</report>
                            <report>summary</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${maven.javadoc.plugin}</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>javadoc</report>
                        </reports>
                    </reportSet>
                    <reportSet>
                        <id>tests</id>
                        <configuration>
                            <show>private</show>
                        </configuration>
                        <reports>
                            <report>test-javadoc</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            
            <!-- pmd funktioniert mit jdk 23 nicht -->
                
                <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${maven.pmd.plugin}</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>pmd</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <version>${spotbugs.maven.plugin}</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>spotbugs</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>

    <profiles>

        <!-- Profile that adds JLink and JPackage runs.

             Add -Pimage or -Dimage to use this profile.
             -->
        <profile>
            <id>image</id>
            <activation>
                <property>
                    <name>image</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <!-- Copy dependencies -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <version>${maven.dependency.plugin}</version>
                        <executions>
                            <!-- erstmal Abhängigkeiten für den Class-Path kopieren -->
                            <execution>
                                <id>copy-dependencies</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>copy-dependencies</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}/modules</outputDirectory>
                                    <includeScope>runtime</includeScope>
                                    <overWriteReleases>false</overWriteReleases>
                                    <overWriteSnapshots>false</overWriteSnapshots>
                                    <overWriteIfNewer>true</overWriteIfNewer>
                                </configuration>
                            </execution>

                            <!-- dazu noch das Projekt-JAR -->
                            <execution>
                                <id>copy</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>copy</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}/modules</outputDirectory>
                                    <artifactItems>
                                        <artifactItem>
                                            <groupId>${project.groupId}</groupId>
                                            <artifactId>${project.artifactId}</artifactId>
                                            <version>${project.version}</version>
                                            <type>${project.packaging}</type>
                                            <destFileName>${project.build.finalName}.jar</destFileName>
                                        </artifactItem>
                                    </artifactItems>
                                    <overWriteIfNewer>true</overWriteIfNewer>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>com.github.akman</groupId>
                        <artifactId>jpackage-maven-plugin</artifactId>
                        <version>${jpackage.maven.plugin}</version>
                        <configuration>
                            <icon>src/main/resources/satan.ico</icon>      <!-- von mir für Icon -->
                            <name>${appName}</name>
                            <type>IMAGE</type>
                            <mainclass>${main.class}</mainclass>
                            <input>${project.build.directory}/modules</input>
                            <mainjar>${jar.filename}.jar</mainjar>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>install</phase>
                                <goals>
                                    <goal>jpackage</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- Profile to build a fat jar

             Add -Pfatjar or -Dfatjar to use this profile.
             -->
        <profile>
            <id>fatjar</id>
            <activation>
                <property>
                    <name>fatjar</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-shade-plugin</artifactId>
                        <version>${maven.shade.plugin}</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>shade</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <shadedClassifierName>full</shadedClassifierName>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <manifestEntries>
                                        <Main-Class>${main.class}</Main-Class>
                                        <Build-Version>1.0</Build-Version>
                                    </manifestEntries>
                                </transformer>
                            </transformers>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/MANIFEST.MF</exclude>
                                        <exclude>**/module-info.class</exclude>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    <name>satan</name>
</project>
 

KonradN

Super-Moderator
Mitarbeiter
Ok, wenn es mit dem angepassten Pfad nun funktioniert, dann dürfte das Problem behoben sein und eine weitere Analyse nicht notwendig. Oder habe ich das missverstanden und dein Problem ist noch offen? Danke.
 

hk

Bekanntes Mitglied
Ok, wenn es mit dem angepassten Pfad nun funktioniert, dann dürfte das Problem behoben sein und eine weitere Analyse nicht notwendig. Oder habe ich das missverstanden und dein Problem ist noch offen? Danke.
Ja, es ist erledigt und funktioniert, herzlichen Dank. Trotzdem würde ich gerne wissen wie das mit der "module-info.java" ist. Wer muss die erstellen, wo gehört sie hin?
 

KonradN

Super-Moderator
Mitarbeiter
Nein, die darf sogar nicht vorhanden sein. Das Modulsystem von Java lassen wir bei dem Ansatz des von mir gewählten Templates explizit weg.

Solltest du eine Modulbeschreibung erstellen, dann müsstest Du alle Abhängigkeiten dort entsprechend aufschlüsseln. Das setzt aber auch voraus, dass alle Abhängigkeiten auch eine Modulbeschreibung haben. Sobald das nicht der Fall ist, hast Du leider ein Problem und der bau des Images schlägt fehl.

Dadurch dass Du keine Modulbeschreibung hast, bekommst Du:
  • Eine Warnung bei dem Erstellen des App Image, dass keine Modulbeschreibung gefunden wurde
  • Beim Start der Anwendung einen Hinweis, dass es offiziell nicht unterstützt wird, JavaFX Libraries eben nicht als Module zu laden.
Die Warnungen kannst Du aber nach meinen Erfahrungen beide problemlos ignorieren.

Die Alternative ist, den Abhängigkeiten ohne Modulbeschreibung eben solche zu verpassen. Das habe ich anfangs gemacht mit dem moditect Plugin und das war schlicht ein Alptraum. Das kannst Du Dir in dem JavaMavenApp Template ansehen - da ist ein alter Branch mit log4j oder so in dem ich das einmal etwas aufgebaut hatte damals. Glaub mir einfach: Du willst Das nicht so machen :)

Meine Nachfrage war lediglich eine Nachfrage um mögliche andere Ursachen direkt mit abzuklappern. Das Problem war halt schlicht, dass vor dem ERROR einfach nur ein "[WARNING] The main module descriptor not found" gekommen ist ohne weitere Hinweise....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bluedaishi OutputStream -> Desktop AWT, Swing, JavaFX & SWT 6
I Erste Desktop Software - blutiger Anfänger AWT, Swing, JavaFX & SWT 4
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
C Open PDFs via Desktop.open(..) fails AWT, Swing, JavaFX & SWT 4
VfL_Freak AWT Browser öffnen und schließen via java.awt.Desktop AWT, Swing, JavaFX & SWT 4
Guybrush Threepwood Desktop.open(file) hängt AWT, Swing, JavaFX & SWT 4
B Java auf dem Desktop benutzen AWT, Swing, JavaFX & SWT 7
eLogic png transparent auf Desktop Zeichnen AWT, Swing, JavaFX & SWT 3
R Java Desktop Anwendung erstellen. Womit? AWT, Swing, JavaFX & SWT 3
T GUI ohne Rahmen auf Desktop AWT, Swing, JavaFX & SWT 3
T Programm vom Desktop starten! AWT, Swing, JavaFX & SWT 2
E Spinne die aufm desktop dem mauszeiger folgt! AWT, Swing, JavaFX & SWT 11
F fertige JApplets in Desktop Application einbinden AWT, Swing, JavaFX & SWT 4
F ansprechende Java Desktop Application AWT, Swing, JavaFX & SWT 2
T Swing JFileChooser --> Desktop und Laufwerke im "Suchen in" - Drop Down AWT, Swing, JavaFX & SWT 3
S SWT Drag´n´Drop vom Desktop/Explorer AWT, Swing, JavaFX & SWT 7
S Desktop Programmieren AWT, Swing, JavaFX & SWT 2
C Problem mit Desktop.getDesktop().open AWT, Swing, JavaFX & SWT 4
B Swing Sprünge in einer Swing Desktop Applikation AWT, Swing, JavaFX & SWT 2
F Screenshot vom Desktop machen? AWT, Swing, JavaFX & SWT 2
J Applikation als Desktop-"Widget" AWT, Swing, JavaFX & SWT 2
G avi-Datei mit Desktop.getDesktop().open(File) öffnen AWT, Swing, JavaFX & SWT 4
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2
D Robot: Screenshot vom Desktop Hintergrund möglich ? AWT, Swing, JavaFX & SWT 3
vogella Java 6 - Desktop - Attachement AWT, Swing, JavaFX & SWT 3
K Desktop toolbar Problem AWT, Swing, JavaFX & SWT 2
A GUI-Verknüpfung auf dem Desktop AWT, Swing, JavaFX & SWT 12
S Direkt auf den Desktop zeichnen? AWT, Swing, JavaFX & SWT 17
B Fenstet am Desktop-Rand andocken? AWT, Swing, JavaFX & SWT 10
T JInternalFrames und Desktop-Elemente AWT, Swing, JavaFX & SWT 6
O Swing Icon verschwindet beim Verschieben eines JLabels AWT, Swing, JavaFX & SWT 8
G Ikonli in Fat-Jar mit mehreren Icon-Packs einbinden AWT, Swing, JavaFX & SWT 5
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
krgewb Swing Icon von Button AWT, Swing, JavaFX & SWT 12
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
G Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
U AWT Smoother Icon AWT, Swing, JavaFX & SWT 2
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D Icon in Menuitem einfügen AWT, Swing, JavaFX & SWT 8
C Icon in der Spaltenüberschrift AWT, Swing, JavaFX & SWT 1
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
C JavaFX Application -Icon wird falsch dargestellt AWT, Swing, JavaFX & SWT 7
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
D JavaFX - MenuItem mit Icon AWT, Swing, JavaFX & SWT 1
T JFrame Icon unter Linux/Ubuntu AWT, Swing, JavaFX & SWT 11
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
H Javafx - Menuitem - Icon AWT, Swing, JavaFX & SWT 4
J JComboBox Dropdown Icon AWT, Swing, JavaFX & SWT 2
vodkaz JButtonz Icon&Background AWT, Swing, JavaFX & SWT 3
B Windowbuilder - Icon für Button einbinden AWT, Swing, JavaFX & SWT 2
B Icon AWT, Swing, JavaFX & SWT 5
E Swing JFrame Icon AWT, Swing, JavaFX & SWT 3
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
H Label mit Icon positionieren AWT, Swing, JavaFX & SWT 14
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
J Icon vor Button AWT, Swing, JavaFX & SWT 7
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
TheWhiteShadow Swing Problem mit Icon-Menü-Leiste AWT, Swing, JavaFX & SWT 5
S Würfelanimation icon updaten AWT, Swing, JavaFX & SWT 8
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
M Swing DoubleBuffer mit Icon AWT, Swing, JavaFX & SWT 3
TiME-SPLiNTER JLabel mit Icon & JFrame Resize AWT, Swing, JavaFX & SWT 5
V Panel/Icon aktualisieren AWT, Swing, JavaFX & SWT 10
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
X Icon in JTable abbilden AWT, Swing, JavaFX & SWT 10
M Icon wird bei externen Jar nicht angezeigt AWT, Swing, JavaFX & SWT 2
L toggel icon in jtable AWT, Swing, JavaFX & SWT 3
kodela Swing Icon in der Titelleiste "festnageln" AWT, Swing, JavaFX & SWT 6
G JLabel Icon Pfeilform AWT, Swing, JavaFX & SWT 14
S JCheckBoxMenuItem - Haekchen verschwindet bei Icon AWT, Swing, JavaFX & SWT 3
Burny91 Swing Swatches vom JColorChooser als Icon für JButton benutzen AWT, Swing, JavaFX & SWT 4
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
algorismi JInternalframe Icon AWT, Swing, JavaFX & SWT 14
M JCheckBox Icon anpassen AWT, Swing, JavaFX & SWT 2
E Icon für Fenster AWT, Swing, JavaFX & SWT 5
M Prozess-Icon im Prozessmanager AWT, Swing, JavaFX & SWT 8
W Swing Button mit Icon AWT, Swing, JavaFX & SWT 3
S svg Icon für Button (Batik Problem?) AWT, Swing, JavaFX & SWT 3
C Swing JToggleButton und Icon AWT, Swing, JavaFX & SWT 2
S JTree - Knoten mit animiertem GIF/Icon AWT, Swing, JavaFX & SWT 5
S vector Icon AWT, Swing, JavaFX & SWT 3
C LayoutManager Icon Einfügen? AWT, Swing, JavaFX & SWT 6
N Icon für Button wird nicht gefunden AWT, Swing, JavaFX & SWT 11
B SWT Eigenes Icon für CheckboxTreeViewer AWT, Swing, JavaFX & SWT 3
K LookAndFeel JTabbedPane mit Icon und CloseButton AWT, Swing, JavaFX & SWT 2
badfish Swing ImageIcon auf JLabel, Fenster Maximieren verbieten und Icon oben links austauschen? AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben