JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei)

B

BigMemo007

Aktives Mitglied
Hallo liebes Forum,

ich habe mein Program soweit fertig. Hat natürlich bestimmt viele Fehler, aber ich würde es gerne erstmal deployen. Wie oben erwähnt, entweder als runnableJAR oder als exe. Es sollen auch User die App verwenden können, die keine Javaumgebung installiert haben. Das Deployment-Kit soll alles so zusammen packen, dass der user mit einem Doppelklick auf die Startdatei die App starten kann.

Ich nutze in Eclipse OpenJDK Version 14. Für JavaFX habe ich die open javafx-SDK Version 14 installiert. Leider haben beide für -fxbuild- die ant-Dateien nicht. Wenn ich dort das Builden probiere, kommt die Fehlermeldung

Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.

Das liegt mMn wegen der fehlenden Ant-Implementierung bei meinen Versionen. Andere JDK versionen, z.B JDK 1.8.0_271 von Oracle - dort ist die Ant-Implementierung vorhanden - können mein Programm nicht starten. Es kommt eine "Fatall Error" die nichts aussagt, eben aus ein "Fatall Error".

Die normale runnableJAR klappt auch nicht, die man unter Export machen kann. Das Jar ist zwar über 8 MB groß, startet aber nicht. Es öffnet für eine Sekunde die Konsole und schließt die wieder ohne das weiter noch was passiert.

Was kann ich noch probieren?
 

Anhänge

  • Build_Path.JPG
    Build_Path.JPG
    135,1 KB · Aufrufe: 10
  • verzeichnis.JPG
    verzeichnis.JPG
    104,9 KB · Aufrufe: 9
  • export_runnableJAR.JPG
    export_runnableJAR.JPG
    104,5 KB · Aufrufe: 10
kneitzel

kneitzel

Top Contributor
Also mein Ratschlag ist immer, auf Gradle oder Maven zu gehen. Da ist es relativ einfach um z.B. mittels jlink ein image zu bauen.

Der Vorteil ist dabei erst einmal, dass Du kein JavaFX selbst installieren / einbinden musst. Es wird durch gradle / maven wie eine normale Abhängigkeit eingebunden (Nicht ganz - es gehört noch etwas mehr dazu, aber das sind einfache kleine Einträge in pom.xml / build.gradle).

Ich habe dazu mal etwas geschrieben / aufgezeichnet: https://blog.kneitzel.de/2020/11/02/javafx-maven-und-gradle/
und

Generell braucht man da auch nicht viel zu wissen - so kannst Du einfach pom.xml oder build.gradle/settings.gradle kopieren (z.B. von https://github.com/kneitzel/blog-javafx-series und da aus einerm der 03er Ordner je nachdem ob es maven oder gradle sein soll) und etwas die Projektdaten anpassen. Sourcen ggf. noch verschieben (src/main/java wird halt für die java Dateien als Ort gewünscht).

Die IDEs unterstützen das, wenn es auf der Kommandozeile auch übersetzt werden soll, dann würde ich den jeweiligen wrapper empfehlen ...

Das einfach einmal von meiner Seite. Weitere Alternativen wären noch GraalVM (dann wird ein native image erzeugt) oder zusätzlich zu jlink noch die Nutzung von JPackage (ab JDK 14 verfügbar, baut einen Installer aus dem JLink Image)
 
B

BigMemo007

Aktives Mitglied
Danke dir ersteinmal für deinen Tip. Ich habe das Builden mit Maven versucht, aber ich komme nicht mehr weiter.

1. Ich habe in meinem Eclipse ein neues Maven-Projekt erstellt und meine Packages aus meinem JavaFX-Projekt in src/main/java rüberkopiert.

mavenProjektMeinePackagesAdded.JPG


2. Dann habe ich die pom.xml Datei nach deinen Vorgaben angebapsst.
XML:
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.bigmemo</groupId>
  <artifactId>nogoindebt</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>nogoindebt</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>

    <organization>
        <!-- Used as the 'Vendor' for JNLP generation -->
        <name>MI</name>
    </organization>

  <dependencies>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>11.0.2</version>
    </dependency>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-fxml</artifactId>
      <version>11.0.2</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>11</release>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.3</version>
        <configuration>
          <release>11</release>
          <jlinkImageName>nogoindebt</jlinkImageName>
          <launcher>nogoindebt</launcher>
          <mainClass>application.RunEinnAusgApp</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Da ich keine Module habe, habe ich in <mainClass> den Packagenamen.MainKlassenNamen eingetragen.


3. pom.xml abgespeichert und unter RunAs->maven.Install gemacht. Mit folgenden Meldungen

Wiki:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Memo/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/Memo/eclipse/jee-2020-06/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Memo/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/Memo/eclipse/jee-2020-06/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.bigmemo:nogoindebt >-----------------------
[INFO] Building nogoindebt 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ nogoindebt ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ nogoindebt ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ nogoindebt ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ nogoindebt ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ nogoindebt ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ nogoindebt ---
[INFO] Building jar: C:\Users\Memo\eclipse-workspace\nogoindebt\target\nogoindebt-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ nogoindebt ---
[INFO] Installing C:\Users\Memo\eclipse-workspace\nogoindebt\target\nogoindebt-1.0-SNAPSHOT.jar to C:\Users\Memo\.m2\repository\com\bigmemo\nogoindebt\1.0-SNAPSHOT\nogoindebt-1.0-SNAPSHOT.jar
[INFO] Installing C:\Users\Memo\eclipse-workspace\nogoindebt\pom.xml to C:\Users\Memo\.m2\repository\com\bigmemo\nogoindebt\1.0-SNAPSHOT\nogoindebt-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.843 s
[INFO] Finished at: 2020-12-06T20:29:02+01:00
[INFO] ------------------------------------------------------------------------


Mir ist aufgefallen, dass mein Maven-Projekt auf JDK Version 1.5 eingestellt war und deshalb die Fehlermeldungen in meinen Klassen aufgetaucht sind, weil 1.5 z.B. Lamdas usw nicht beherrscht.
Aber trotzdem erscheint der erstellte JAR-Container - BUILD ist ja SUCCESS - der in C:\home\.m2\repository\com\bigmemo\nogoindebt\1.0-SNAPSHOT erstellt wurde, mit 95kB zu klein. Hier kann unmöglich die JavaFX-Abhängigkeit und meine Klassen untergebracht sein.


jarcontainer.JPG

5. Ich habe im Build-Path die OpenJDK von Version 1.5 (war per default wohl drin) auf 11 eingestellt. Alle Fehler sind verschwunden. Eine neues maven-Install in RunAs gemacht mit folgenden Meldungen

Wiki:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Memo/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/Memo/eclipse/jee-2020-06/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Memo/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/Memo/eclipse/jee-2020-06/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.bigmemo:nogoindebt >-----------------------
[INFO] Building nogoindebt 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ nogoindebt ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ nogoindebt ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ nogoindebt ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ nogoindebt ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ nogoindebt ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ nogoindebt ---
[INFO] Building jar: C:\Users\Memo\eclipse-workspace\nogoindebt\target\nogoindebt-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ nogoindebt ---
[INFO] Installing C:\Users\Memo\eclipse-workspace\nogoindebt\target\nogoindebt-1.0-SNAPSHOT.jar to C:\Users\Memo\.m2\repository\com\bigmemo\nogoindebt\1.0-SNAPSHOT\nogoindebt-1.0-SNAPSHOT.jar
[INFO] Installing C:\Users\Memo\eclipse-workspace\nogoindebt\pom.xml to C:\Users\Memo\.m2\repository\com\bigmemo\nogoindebt\1.0-SNAPSHOT\nogoindebt-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.558 s
[INFO] Finished at: 2020-12-06T20:37:45+01:00
[INFO] ------------------------------------------------------------------------


Hier ist wieder der ausgespuckte JAR-Container nur 96kb groß. Ein doppelklick bewirkt nur ein 100 milisekündiges auploppen der Konsole. Mehr nicht.

In meinem ursprünglichen JavaFX projekt musste ich unter RunConfigurations->Arguments->VM arugments folgendes hinzufügen
--module-path "C:\Program Files\Java\openJava\javafx-sdk-14.0.1\lib"
--add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web

Ich weiß nicht, ob man das in einem Maven-Projekt auch machen muss und wo. Wenn Maven die Abhängigkeiten automatisch einfügt (in meinem JavaFx-Pojekt musste ich ja die OpfenFX-Jars manuell einfügen und deshalb kann ich nachvollziehen, dass man die VM-Argumente anpassen muss) solle doch wohl das auch wenn nötig automatisch gehen.


Ich weiß nicht, was ich noch machen muss. Ich will einfach mein Projekt deployen. Soll ich mal mein Projekt als Zip hier hochladen?
 
kneitzel

kneitzel

Top Contributor
Wenn Du das maven Projekt so gebaut hast, wie ich es in dem Video beschreibe, dann hast Du da ja das entsprechende Plugin auch mit drin.

Daher nutz doch die build Ziele vom javafx Plugin: javafx:jlink baut ein komplette image, welches du weiter geben kannst. Ich habe mich nicht zu intensiv mit Maven beschäftigt, da ich in der Regel Gradle nutze. Aber bei meinen Tests war das image immer voll funktionsfähig.
 
dzim

dzim

Top Contributor
Nur so als Hinweis im Nachtrag: Falls die Anwendung nicht vollständig modularisiert ist (ja, es gibt valide Gründe dafür, wir sind auf Arbeit in so einen Fall reingerannt: Abhängigkeit auf eine alte Library, die wohl nicht mehr geupdated wird - und wir werden *noch* keine Migration dafür machen, hängt zu viel dran), haben Dirk Lemmerman und Michael Paus mal ein Beispiel zusammengetragen, wie man eine App dennoch mit jlink und jpackage machen kann:


Wir verwenden es gemeinsam mit dem jeweils aktuellen Bellsoft Full JDK und sind ganz zufrieden.
 
B

BigMemo007

Aktives Mitglied
Also, ich hab so einiges ausprobiert, aber immer mit dem Ergebnis, dass zwar eine .jar kreiiert wird, aber die nur ein halbsekündiges aufploppen der Windows-Console bewirkt und sonst nichts.

Das was unbeding hätte funktionieren müssen war, dass ich in Eclipse ein neues Maven-Projekt mit folgendem archtype kreiirt habe:
GroupID: org.openjfx, ArtifactID: javafx-archtype-simple, Version 0.0.5

Die hat eine App.java Datei, die in meinem Eclipse startet und ein JavaFX Fenster mit einem Label der Java Version und JavaFX Version ausgibt. Also was grafisches.

Wenn ich die nun über RunAs instaliere, so wird eine meinvergebenername.jar datei unter target abgelegt. Wenn ich nun die doppelt anklicke, kommt das Fenster nicht. Funktioniert auf meinem Windows-System eventuell runnable Jars nicht? Gibt es sowas?

Das macht mich verrückt, dass ich das nicht hinkriege....(((
 
B

BigMemo007

Aktives Mitglied
Soll ich mal meine App als zip hier hochladen und ein Profi probiert das mit meiner Anwendung? Dann würde ich auch genau wissen, wie die pom.xml in meinem Fall auszusehen hätte. A und noch eine Sache. Ich nutze JDK 14 und javafx-sdk 14. Bei beiden ist die Datei javafxpackager nicht vorhanden. Ist das normal? Wenn ich es mit dem integrierten javafxpackager hätte probieren wollen, würde das auch nicht gehen. Bin zwar Anfänger in Sachen Packaging, aber so kompliziert hätten die Java-Entwickler das auch nicht machen müssen!!! :(((
 
kneitzel

kneitzel

Top Contributor
Aber wenn ich das so lese, dann nutzt du mit dem archetyp das javafx-maven-plugin. Aber statt die Aufrufe des plugins zu nutzen, nutzt du ein einfaches mvn package oder so. Schau doch einfach mal unter https://github.com/openjfx/javafx-maven-plugin nach - da ist klar gegeben als goals:
javafx:run zum ausführen
javafx:jlink um ein image zu bauen

Das sind also die entsprechenden goals. Wenn Du ein package machst, dann kommt tatsächlich ein jar heraus, das nicht ausführbar ist.

Und auch das javafxpackager - das sagt mir so gar nichts - wonach suchst Du denn da? Meinst Du evtl. jpackage, das man nutzen kann um einen Installer zu bauen? Das wirst Du auch haben ...

Die Schritte sind dann relativ einfach:

mvn javafx:jlink
==>Dies baut in target das entsprechende image incl. batch-Script zum starten.

Dann in target kann man jpackage nutzen:
jpackage -n name --app-image ImageVerzeichnis
=> das sollte dir einen installer bauen (also auf Windows ein msi - benötigt das wix toolset)

jpackage --type app-image -n imageName -m modul/hauptklasse --runtime-image ImageVerzeichnis
=> das baut Dir ein Verzeichnis mit einer exe zum starten statt eben der .bat Datei

Ein einfaches Beispiel findest du unter https://github.com/kneitzel/blog-javafx-series/tree/master/03 helloworld - maven
Da ist zwar noch das plugin in 0.0.3 statt 0.0.5 und openjfy in 11.0.2 statt 14.02 enthalten, aber die Versionen sind ja einfach anpassbar. Oder du nimmst für das pom.xml einfach das folgende.
XML:
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>de.kneitzel</groupId>
  <artifactId>hellofx</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>hellofx</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>

    <organization>
        <!-- Used as the 'Vendor' for JNLP generation -->
        <name>K. Neitzel Blog</name>
    </organization>

  <dependencies>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>14.0.2</version>
    </dependency>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-fxml</artifactId>
      <version>14.0.2</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>11</release>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.5</version>
        <configuration>
          <release>11</release>
          <jlinkImageName>hellofx</jlinkImageName>
          <launcher>hellofx</launcher>
          <mainClass>HelloWorld.main/helloworld.HelloWorld</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
Dann einfach in dem Verzeichnis mit dem Projekt auf der Kommandozeile ausführen (Dank maven wrapper brauchst Du nur das openjdk 14 in Deinem Pfad):
mvnw javafx:jlink
cd target
jpackage --type app-image -n hellofxapp -m HelloWorld.main/helloworld.HelloWorld --runtime-image hellofx

==> Du hast dann ein Verzeichnis hellofx mit bin/hellofx.bat das du starten kannst.
==> Desweiteren ein hellofxapp mit einem hellofx.exe das du starten kannst.
Diese Ordner kannst Du so weiter geben.



Dann noch ein Wort zum OpenJDK 14: Das ist veraltet. Wenn Du aktuelle Versionen nutzen möchtest, dann solltest Du dies auch machen, d.h. jetzt wäre 15 aktuell ... oder ,an geht einfach auf eine LTS Version - das wäre jetzt die 11. (Siehe zur Übersicht ggf https://en.wikipedia.org/wiki/Java_version_history)
 
dzim

dzim

Top Contributor
javapackager war das alte - pre-Module - Paketisierungstool (kam mit dem einzug von JavaFX in das Oracle JDK mit rein, glaube ich mich zu entsinnen). Ich weiss nicht, ob es direkt mit Java 9 rausgeflogen war, aber es gibt erst seit Java 14 wieder das offizielle, neue und Modul-aware jpackage.

Wie @kneitzel sagt, musst das compile und so schon über das das Plugin machen. Also mit dem javafx:* Präfix.

Was mir immer noch nicht klar ist: Ist denn deine Anwendung überhaupt richtig modularisiert? Also enthält sie die Datei module-info.java ?
Wenn nein: Dann kannst du javafx:jlink vermutlich vergessen, denn das Tool geht von einer modularisierten App aus, holt alle benötigten Module und baut eine Runtime mit genau den Abhängigkeiten. Daher müsstest du dann manuell so aufrufen, dass es weiss, welche Module es inkludieren soll. Wenn du erst mal ein Runtime-Image hast, kannst du den Rest von kneitzels jpackage Befehlen nutzen. Musst ihm halt nur sagen, wo das Image ist.

Bei jpackage auf Windows müsst ihr nur eins bedenken: Wenn ihr einen Installer bauen lasst, könntet ihr auf einen Bug stoßen. Wir installieren unsere App immer nur Lokal für den User (irgendwo im AppData - ich kümmere mich nicht um den Part und das OS), jpackage hat aber den Bug, es mit Umlauten (wahrscheinlich aber allen speziellen Zeichen) nicht klar kommt. Dann lässt sich die Anwendung von dort nicht starten. Also nur, dass ihr es im Hinterkopf behaltet.
 
B

BigMemo007

Aktives Mitglied
Danke schonmal für die vielen Informationen.

Wie schon gesagt, ich habe ein neues Maven-Projekt mit GroupID: org.openjfx, ArtifactID: javafx-archtype-simple, Version 0.0.5 gemacht.
Hier die pom.xml

XML:
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bigmemo</groupId>
    <artifactId>nogoindebt</artifactId>
    <version>3.0.3-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>13</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
    <plugin>
        <artifactId>maven-jlink-plugin</artifactId>
        <version>3.0.0</version>
        <extensions>true</extensions>
        <configuration>
            <!-- configuration elements goes here -->
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
            <release>11</release>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.4</version>
        <configuration>
            <mainClass>com.bigmemo.nogoindebt.App</mainClass>
        </configuration>
    </plugin>
</plugins>
    </build>
</project>

Wie man sieht ist hier das jlink Plugin integriert. Und soweit ich verstanden habe, ist jlink für das packaging der ausführbaren .jar Dateien zuständig. Ok.

In meinem Eclipse habe ich unter Run As -> 4 Maven Build... gewählt. Da erscheint ein neues Fenster wo man die Maven goals eingeben kann.


editconfigandlaunch.JPG

Hier zu sehen, ich habe javafx:jlink eingebeben und gestartet. Diese Projekt ist modularisiert da, es die module-info.java enthält im gegensatz zu meinem Programm. Mein Programm ist leider nicht modularisiert und ich hoffe, es gibt eine Möglichkeit dies nachzuholen.

Ok. Wenn ich es schaffe dieses Dummy-Projekt als jar zu laufen zu bringen, setze ich mich dann an meinem Projekt.

Warum klappt das starten noch nicht? Es müsste mir eine javafx-Fenster mit einem Label für die java-Version und einem anderen Label für die javafx-Version ausgeben. Tut leider noch nicht.
 
kneitzel

kneitzel

Top Contributor
Was genau probierst Du denn da zu starten? Du hast danach keine jar Datei. Und wenn Du von maven eine jar Datei bauen lässt, dann ist die sogar ohne manifest, denn Du hast in der pom.xml diesbezüglich nichts konfiguriert.

Dann hast Du da ein maven-jlink-plugin in deiner pom.xml - das hast Du noch nicht einmal konfiguriert - würde ich rausschmeißen, denn das brauchst Du schlicht nicht.

Damit solltest Du dann bei javafx:jlink eigentlich schon in target einen Ordner bekommen, der das Image bereit hält. Also kein jar File sondern ein Ordner mit JRE und allem drum und dran und einem Startscript im bin Verzeichnis.... (Du kannst im javafx-maven-plugin noch jlinkImageName für den Verzeichnisnamen des images und launcher für den Namen des Start Scriptes setzen.)

Generell ist mein Ratschlag, wenn man mit Maven nicht vertraut ist und sich die Konfiguration nicht im Detail erarbeiten will: Nimm Dir einfach ein funktionierendes pom.xml und passe es an. Da musst Du nicht nach Archetypes suchen und so. Einfach pom.xml erstellen, Inhalt rein, an einer kleinen Anzahl Elemente anpassen und schon läuft es.

Und wenn Dein Projekt eine module-info.java enthält, dann hast Du es doch bereits modularisiert. Also prüfen, dass da vernünftiges drin steht. Also auch einfach vom Link:
Java:
module HelloWorld.main {
    requires javafx.controls;
    requires javafx.fxml;
    exports helloworld;
}

HelloWorld.main ist ein Name, denn Du beliebig vorgeben kannst. Das muss dann bei der Angabe der main Klasse mit davor mit / getrennt. (Einfach meine Beispiel pom.xml anschauen!)
Der exports Eintrag gibt den Namespace an, den Du exportieren willst, sprich: Auf den Du zugreifen können willst...

Aber ganz wichtig:
Du baust kein jar File, das Du einfach so weiter geben kannst!

Du baust ein Image und das kannst Du weiter geben.

Wenn Du unbedingt ein jar File haben willst, dann vergiss diese Plugins. Nimm Dir ein Java mit integriertem JavaFX. Und dann baust du ein 08/15 jar File mit Maven (natürlich musst Du es in der pom.xml konfigurieren, so dass die Jar Datei ein korrektes manifest bekommt!)
Und dann kannst Du das jar File auch mit doppelklick starten - So es bei Doppelklick mit einem java mit includiertem JavaFX gestartet wird.
Das ist aber eine schrott Einschränkung. Daher bau ein Image, gib das Image weiter und siehe da: Es läuft auf den Rechnern egal ob und welches Java da installiert ist....
 
B

BigMemo007

Aktives Mitglied
Also, was echt cool wäre, wenn ihr für Dumme eine Schritt-für-Schritt Anleitung geben würdet, mit dem Ziel, JavaFX-Projekte so zu packagen, dass sie mit einem Doppelklick für den Anwender zu verwenden ist. Also, Deploy-Status erreichen. Also wie @kneitzel sagt, ein Image erstellen :)

Mein System:
<os>Windows 10</os>
<IDE>Eclipse<IDE></IDE>
<IDE-Version>Version: 2020-06 (4.16.0)</IDE-Version>
<IDE-build>Build id: 20200615-1200</IDE-build>
<JDK>openJDK</JDK>
<JDK-version>14</JDK-version>
<javaFX>openSDK</javaFX>
<javaFX-version>14</javaFX-version>
<person>kein Maven Profi</person>
<person>will aber eins werden</person>
<person>gibt nie auf</person>
<person>:p</person>


Ich zähl mal grad auf, was ich bis jetzt verstanden habe:

1. Maven ist ein Tool (unter vielen anderen) das genau mein Ziel erfüllt. Es wrappt das Java-Projekt (kann auch viele andere Projekte wie Web, pyton, usw wrappen) und stellt dependencys zu anderen (fertigen/verwendbaren) Projekten her, wie z.b. javaFX hier in meinem Fall. Maven nutzt auch plugins um bestimmte Aufgaben wie das Packaging ausführen zu können.

2. Meine Ecplipse Version hat Maven automatisch mit installiert. Obwohl ich Maven manuell nie installiert habe (dannn natürlich auch die Windows-Umgebungsvariable nicht eingrichtet habe), funktioniert Maven.

3. Maven nutzt für das Packaging das Plugin jlink. Jlink braucht ein java-modularisiertes Projekt, das eben "module-info.java" beinhaltet. Mein Projekt habe ich z.B. ohne Modularisierung gemacht.

4. Es sind trotz Aufruf von javafx:jlink weitere Schritte nötig, weil die aufeinander aufbauen.


Meine Fragen:

1. Wie kann ich meine fertige App im nachhinein modularisieren?

2. Wie kann ich meine App im nachhinein in ein Maven-Projekt umwandeln?

3. Welche Schritte muss genau einhalten, damit mein Projekt deployed werden kann?


Eine Schritt-für-Schritt Anleitung für Dumme würde mich sehr freuen! Bruchstücke verwirren mich irgendwie nur weiter :) Oder ich lade meine App als zip hoch, einer nimmt sie und sieht, was alles gebraucht wird, erstellt ein Image und sagt mir wie er es geamcht hat....
 
B

BigMemo007

Aktives Mitglied
Und ich habe das hier probiert:

Code:
C:\Users\Memo\eclipse-workspace\nogoindebt\target> jpackage --type app-image -n meintest -m com.bigmemo.nogoindebt/App.java --runtime-image C:\Users\Memo\eclipse-workspace\nogoindebt\target
WARNING: Using incubator modules: jdk.incubator.jpackage
java.nio.file.FileSystemException: C:\Users\Memo\eclipse-workspace\nogoindebt\target\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\image\bin\server\jvm.dll -> C:\Users\Memo\eclipse-workspace\nogoindebt\target\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\meintest\runtime\image\bin\server\jvm.dll: Es steht nicht genug Speicherplatz auf dem Datenträger zur Verfügung
PS C:\Users\Memo\eclipse-workspace\nogoindebt\target>

Das heist das von @kneitzel erwähnte Manifest ist bei mir wohl ein großes Problem. Das Image weiß nicht, von wo aus das Programm gestartet werden soll.

Wie würde ich es einfügen in die pom.xml?
 
kneitzel

kneitzel

Top Contributor
Ich habe ein Gespräch mit Dir gestartet - vielleicht ist das ja ein Vorschlag, der Dich weiter bringen könnte. (Idee eines ersten IT Erklärbär Videos ... So lange wie ich keine Morddrohungen bekomme, belästige ich die YT Gemeinde weiter :) )
 
kneitzel

kneitzel

Top Contributor
Also gut, das erste Video des IT Erklärbären ist damit erstellt ... und hochgeladen ....

Wichtig ist: Ist die Qualität ausreichend? Die Idee hier ist, dass es eben nichtmehrfach aufgenommen und groß geschnitten wird. Geht das so?
Oder ist das jetzt zu sehr Zumutung? Wobei ich ja fast meine, dass es eh für Masochisten ist, was ich da mache ... aber auch der Markt muss ja bedient werden :)

 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
L JavaFX PdfViewer für JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
J JavaFX Anwendung läuft in eclipse, nicht aber exportiert AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
R Können Animationen in JavaFX "verschluckt" werden? AWT, Swing, JavaFX & SWT 8
dtr84 JavaFX/OpenJFX mittels Apache Ivy einbinden (Java 11) AWT, Swing, JavaFX & SWT 18
D runnable Jar mit Javafx erstellen(Eclipse) AWT, Swing, JavaFX & SWT 10
Monokuma Blöcke erzeugen (JavaFX) AWT, Swing, JavaFX & SWT 1
P JavaFx - Progressbar - Füllen mittels mehreren Tasks AWT, Swing, JavaFX & SWT 0
Rafael.Cupari JavaFx Installer AWT, Swing, JavaFX & SWT 16
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 3
C JavaFx sound abspielen AWT, Swing, JavaFX & SWT 3
C JavaFX mit CSS in Eclipse AWT, Swing, JavaFX & SWT 2
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
N JavaFX applikation auf anderen Systemen zum laufen bringen AWT, Swing, JavaFX & SWT 7
W JavaFX JavaFX - TreeView will nicht AWT, Swing, JavaFX & SWT 8
H JavaFX JavaFX - Scene Builder - BorderPane AWT, Swing, JavaFX & SWT 23
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
C JavaFX Installation unter IntelliJ IDEA AWT, Swing, JavaFX & SWT 5
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
T Szene wechselen JavaFX mit If in Main Class AWT, Swing, JavaFX & SWT 2
S JavaFx Zufallsfarbe beim Button-Klick AWT, Swing, JavaFX & SWT 22
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
R javafx erste application AWT, Swing, JavaFX & SWT 12
kneitzel JavaFX - Binding & Co AWT, Swing, JavaFX & SWT 42
S Alternative JavaFX TableView AWT, Swing, JavaFX & SWT 1
B Game of Life in JavaFX AWT, Swing, JavaFX & SWT 5
B eclipse für JavaFx setuppen AWT, Swing, JavaFX & SWT 4
N JavaFX Chioceboxen verküpfen AWT, Swing, JavaFX & SWT 0
J JavaFX Controls AWT, Swing, JavaFX & SWT 4
S JavaFx AWT, Swing, JavaFX & SWT 2
Tashtego JavaFX + Mobile AWT, Swing, JavaFX & SWT 9
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
L JavaFX Javafx Dependency-Inversion AWT, Swing, JavaFX & SWT 19
OSchriever JavaFX JavaFX auf Raspberry Pi 4 AWT, Swing, JavaFX & SWT 6
M JavaFX Tab auswählen mit JavaFX AWT, Swing, JavaFX & SWT 9
J JavaFX JavaFX Splitpane - Zugriff auf die Controller der Elemente AWT, Swing, JavaFX & SWT 8
M Java und JavaFX 13 läuft endlich AWT, Swing, JavaFX & SWT 4
N JavaFX Logging des JavaFX Application Threads mit Log4J AWT, Swing, JavaFX & SWT 3
L Java FX JavaFX Effect Attribute ausdrucken AWT, Swing, JavaFX & SWT 1
Hatsi09 JavaFx Mediaplayer seltsames Verhalten AWT, Swing, JavaFX & SWT 0
Tashtego JavaFX - Datenübergabe zwischen Scenes AWT, Swing, JavaFX & SWT 8
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
S Jogl und JavaFX AWT, Swing, JavaFX & SWT 6
Bluedaishi JavaFX ProgressBar AWT, Swing, JavaFX & SWT 10
S JavaFX JavaFX TableView scrollen färbt falsche Zeilen AWT, Swing, JavaFX & SWT 1
F JavaFX JavaFX Builden: JavaFX Runtime components are missing AWT, Swing, JavaFX & SWT 0
F JavaFX wirft zufällig Exceptions AWT, Swing, JavaFX & SWT 5
M JavaFX JAVAFX TreeItem mit Tooltip versehen AWT, Swing, JavaFX & SWT 4
techM JavaFX -> CSS AWT, Swing, JavaFX & SWT 5
J JavaFx TableView mit CheckBox AWT, Swing, JavaFX & SWT 4
J JavaFX Stoppuhr mit javafx.timeline AWT, Swing, JavaFX & SWT 2
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
L JavaFX auf dem PI 4 installieren AWT, Swing, JavaFX & SWT 2
L JavaFX JavaFX Forms mit Groovy starten AWT, Swing, JavaFX & SWT 1
K JavaFX CSS Border (Verschiebung verhindern) AWT, Swing, JavaFX & SWT 4
K JavaFX Element in HBOX nach rechts verschieben AWT, Swing, JavaFX & SWT 2
M error: package javafx.scene.web is not visible import javafx.scene.web.*; AWT, Swing, JavaFX & SWT 16
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
F Kein JavaFX mehr im Eclipse Wizard AWT, Swing, JavaFX & SWT 1
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
N Array mit JavaFX Elementen AWT, Swing, JavaFX & SWT 9
S JavaFX Exception in thread "JavaFX Application Thread" AWT, Swing, JavaFX & SWT 3
W JavaFX JavaFX - Spalten auf ganze SpreadsheetView verteilen AWT, Swing, JavaFX & SWT 16
L Label im JavaFX Thread Updaten AWT, Swing, JavaFX & SWT 3
S Erwaege JavaFX Einstieg AWT, Swing, JavaFX & SWT 27
O JavaFX mini Taschenrechner! AWT, Swing, JavaFX & SWT 35
L JavaFX JavaFX, FXML und Guice? AWT, Swing, JavaFX & SWT 0
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
L Javafx Controller Klasse in Maven AWT, Swing, JavaFX & SWT 7
L JavaFX JavaFX stürtzt durch einen Server#connect Exception AWT, Swing, JavaFX & SWT 3
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
E Aktuelle Uhrzeit auf jeder Stage anzeigen lassen (JavaFX) AWT, Swing, JavaFX & SWT 2
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
L JavaFX JavaScript im Javafx Webview AWT, Swing, JavaFX & SWT 4
pkm Ich kann JavaFX nicht installieren AWT, Swing, JavaFX & SWT 4
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
L JavaFX JavaFX Diagram Editor AWT, Swing, JavaFX & SWT 3
L JavaFX JavaFX Application mit Preloader sauber runterfahren AWT, Swing, JavaFX & SWT 10
K JavaFX funktioniert nicht AWT, Swing, JavaFX & SWT 2
G JavaFX Slider in JavaFX beide Seiten beschriften AWT, Swing, JavaFX & SWT 2
D JavaFX JavaFX Tutorial AWT, Swing, JavaFX & SWT 8
Bluedaishi JavaFX JFoenix TextField KeyEvent AWT, Swing, JavaFX & SWT 2
B JavaFx TreeView mit file system AWT, Swing, JavaFX & SWT 1
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
H Feste Positionen und Größen in JavaFX AWT, Swing, JavaFX & SWT 1
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen

Anzeige


Oben