Visualizzazione dei risultati da 1 a 10 su 10

Discussione: JDK 11 e JavaFX

  1. #1

    JDK 11 e JavaFX

    ciao!

    mi pare di aver capito che JavaFX è stato rimosso dal JDK 11.
    ed infatti un mio programma che funziona con Java 10, adesso non funziona più:
    codice:
    Error: Could not find or load main class com.mp.jnotes.Main
    Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
    quello che non ho capito è se è possibile ovviare in qualche modo a questo problema, ed in caso come.
    mi saoreste dare qualche delucidazione please??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fermat Visualizza il messaggio
    quello che non ho capito è se è possibile ovviare in qualche modo a questo problema, ed in caso come.
    mi saoreste dare qualche delucidazione please??
    La pagina Oracle JDK 11 Release Notes dice:

    JavaFX is no longer included in the JDK. It is now available as a separate download from openjfx.io.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    si avevo visto quel link.
    quello che non riesco a capire è come usare JavaFX con JDK 11.

    l'ho installato sul mio pc, e messo come versione di default:
    codice:
    $ java --version
    java 11 2018-09-25
    Java(TM) SE Runtime Environment 18.9 (build 11+28)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode)
    poi ho provato a vedere qui: https://openjfx.io/openjfx-docs/#maven
    questo è il mio pom.xml:
    codice:
    <?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>com.mp.jnotes</groupId>
        <artifactId>JNotes</artifactId>
        <version>1.5</version>
        <name>JNotes</name>
    
        <dependencies>
            <dependency>
                <groupId>de.huxhorn.lilith</groupId>
                <artifactId>de.huxhorn.lilith.3rdparty.junique</artifactId>
                <version>1.0.4</version>
            </dependency>
            <dependency>
                <groupId>org.xerial</groupId>
                <artifactId>sqlite-jdbc</artifactId>
                <version>3.21.0.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.7</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.6</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-csv</artifactId>
                <version>1.5</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.4</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.jexcelapi</groupId>
                <artifactId>jxl</artifactId>
                <version>2.6.12</version>
            </dependency>
            <dependency>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-controls</artifactId>
                <version>11</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <!--
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>10</source>
                        <target>10</target>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.ow2.asm</groupId>
                            <artifactId>asm</artifactId>
                            <version>6.1.1</version>
                        </dependency>
                    </dependencies>
                </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.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>java</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <mainClass>com.mp.jnotes.Main</mainClass>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                <overWriteReleases>false</overWriteReleases>
                                <overWriteSnapshots>false</overWriteSnapshots>
                                <overWriteIfNewer>true</overWriteIfNewer>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>com.mp.jnotes.Main</mainClass>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>lib/</classpathPrefix>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
    
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    </project>
    e questo è il risultato:
    codice:
    $ mvn compile exec:java
    [INFO] Scanning for projects...
    [INFO] 
    [INFO] ------------------------< com.mp.jnotes:JNotes >------------------------
    [INFO] Building JNotes 1.5
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] 
    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ JNotes ---
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 6 resources
    [INFO] 
    [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ JNotes ---
    [INFO] Changes detected - recompiling the module!
    [INFO] Compiling 17 source files to /run/media/matte/PUFFA/Project/JAVA/JNotes/target/classes
    [INFO] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/ControllerMain.java: Some input files use unchecked or unsafe operations.
    [INFO] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/ControllerMain.java: Recompile with -Xlint:unchecked for details.
    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR : 
    [INFO] -------------------------------------------------------------
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/ControllerMain.java:[7,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/ControllerMain.java:[8,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/FXMLUtils.java:[3,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/FXMLUtils.java:[25,19] cannot find symbol
      symbol:   class FXMLLoader
      location: class com.mp.jnotes.FXMLUtils
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/ControllerNota.java:[4,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/AboutController.java:[4,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/AboutController.java:[7,24] package javafx.scene.web does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/AboutController.java:[15,13] cannot find symbol
      symbol:   class HTMLEditor
      location: class com.mp.jnotes.AboutController
    ..........................................
    [INFO] 41 errors 
    [INFO] -------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2.050 s
    [INFO] Finished at: 2018-10-01T11:19:36+02:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project JNotes: Compilation failure: Compilation failure: 
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/ControllerMain.java:[7,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/ControllerMain.java:[8,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/FXMLUtils.java:[3,19] package javafx.fxml does not exist
    [ERROR] /run/media/matte/PUFFA/Project/JAVA/JNotes/src/main/java/com/mp/jnotes/FXMLUtils.java:[25,19] cannot find symbol
    [ERROR]   symbol:   class FXMLLoader
    [ERROR]   location: class com.mp.jnotes.FXMLUtils

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fermat Visualizza il messaggio
    poi ho provato a vedere qui: https://openjfx.io/openjfx-docs/#maven
    Il HelloFX.java indicato in quella pagina chiaramente (basta aprirlo) NON usa FXML. Quindi il pom.xml sempre di esempio dichiara semplicemente la dependency verso org.openjfx:javafx-controls

    Se usi altro es. FXML evidentemente servono anche altre dependency. E infatti basta guardare sul Central Repo: https://search.maven.org/search?q=org.openjfx

    Elenca javafx-controls ma anche .... ta da .... javafx-fxml
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    ammetto che li non avevo guardato.

    cosi funziona:
    codice:
    <!-- JAVAFX -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    grazie!!

  6. #6
    allora, lanciandolo e compilandolo con maven nessun problema.
    ho creato il JAR con mavn package, ed è stato creato senza problemi.

    poi ho provato ad avviarlo:
    codice:
    $ java -jar JNotes.jar 
    Error: JavaFX runtime components are missing, and are required to run this application
    vuol dire che devo installare anche JavaFX sui pc dove usare questa applicazione?
    o me lo posso portare dietro in qualche modo??

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fermat Visualizza il messaggio
    grazie!!
    Prego!


    Quote Originariamente inviata da fermat Visualizza il messaggio
    vuol dire che devo installare anche JavaFX sui pc dove usare questa applicazione?
    o me lo posso portare dietro in qualche modo??
    Non credo che devi "installare" qualcosa. Quella pagina che hai linkato infatti dice "If you want to develop JavaFX applications using maven, you don't have to download the JavaFX SDK"

    Verifica innanzitutto se il "manifest" del tuo jar è stato creato correttamente, e mi riferisco all'attributo Class-Path. E che i jar referenziati siano fisicamente lì nella giusta "relazione" (in termini di percorso relativo) rispetto al jar principale.

    Hai usato maven-dependency-plugin e maven-jar-plugin proprio con quell'obiettivo (dovrei verificare in dettaglio la configurazione ma ad occhio mi pare sensata) cioè copiare le dipendenze per posizionarle correttamente rispetto al jar principale generato anch'esso al build.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    allora, il MANIFEST generato è questo:
    codice:
    Manifest-Version: 1.0
    Created-By: Apache Maven 3.5.4
    Built-By: matte
    Build-Jdk: 11
    Class-Path: lib/de.huxhorn.lilith.3rdparty.junique-1.0.4.jar lib/sqlite-
     jdbc-3.21.0.1.jar lib/commons-lang3-3.7.jar lib/commons-io-2.6.jar lib/
     commons-csv-1.5.jar lib/gson-2.8.4.jar lib/jxl-2.6.12.jar lib/log4j-1.2
     .14.jar lib/javafx-base-11.jar lib/javafx-base-11-linux.jar lib/javafx-
     web-11.jar lib/javafx-web-11-linux.jar lib/javafx-media-11.jar lib/java
     fx-media-11-linux.jar lib/javafx-fxml-11.jar lib/javafx-fxml-11-linux.j
     ar lib/javafx-controls-11.jar lib/javafx-controls-11-linux.jar lib/java
     fx-graphics-11.jar lib/javafx-graphics-11-linux.jar
    Main-Class: com.mp.jnotes.Main
    la cartella lib è nello stesso "livello" del jar che lancio.
    e dentro mi sembra ci siano tutti i jar:
    codice:
    $ ls -l
    -rw-r--r-- 1 matte matte  41K  1 ott 11.58 commons-csv-1.5.jar
    -rw-r--r-- 1 matte matte 210K  1 ott 11.59 commons-io-2.6.jar
    -rw-r--r-- 1 matte matte 488K  1 ott 11.59 commons-lang3-3.7.jar
    -rw-r--r-- 1 matte matte  13K  1 ott 11.59 de.huxhorn.lilith.3rdparty.junique-1.0.4.jar
    -rw-r--r-- 1 matte matte 235K  1 ott 11.58 gson-2.8.4.jar
    -rw-r--r-- 1 matte matte  302  1 ott 11.58 javafx-base-11.jar
    -rw-r--r-- 1 matte matte 733K  1 ott 11.59 javafx-base-11-linux.jar
    -rw-r--r-- 1 matte matte  306  1 ott 11.59 javafx-controls-11.jar
    -rw-r--r-- 1 matte matte 2,4M  1 ott 11.59 javafx-controls-11-linux.jar
    -rw-r--r-- 1 matte matte  302  1 ott 11.59 javafx-fxml-11.jar
    -rw-r--r-- 1 matte matte 125K  1 ott 11.59 javafx-fxml-11-linux.jar
    -rw-r--r-- 1 matte matte  306  1 ott 11.59 javafx-graphics-11.jar
    -rw-r--r-- 1 matte matte 4,7M  1 ott 11.59 javafx-graphics-11-linux.jar
    -rw-r--r-- 1 matte matte  303  1 ott 11.59 javafx-media-11.jar
    -rw-r--r-- 1 matte matte 1,5M  1 ott 11.58 javafx-media-11-linux.jar
    -rw-r--r-- 1 matte matte  301  1 ott 11.59 javafx-web-11.jar
    -rw-r--r-- 1 matte matte  27M  1 ott 11.59 javafx-web-11-linux.jar
    -rw-r--r-- 1 matte matte 709K  1 ott 11.59 jxl-2.6.12.jar
    -rw-r--r-- 1 matte matte 359K  1 ott 11.58 log4j-1.2.14.jar
    -rw-r--r-- 1 matte matte 6,4M  1 ott 11.58 sqlite-jdbc-3.21.0.1.jar

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    scusate, post doppio (non so perché)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fermat Visualizza il messaggio
    la cartella lib è nello stesso "livello" del jar che lancio.
    e dentro mi sembra ci siano tutti i jar:
    Detto e visto così mi pare corretto. Non ho verificato tutti i jar elencati ma nel manifest vedo 20 lib/xxx e nel ls vedo 20 jar. Quindi direi sono quelli. E se la relazione "relativa" con il jar principale è quella che dici dovrebbe essere tutto corretto.

    Potrebbe esserci dell'altro, ad esempio mi verrebbe in mente che ci potrebbe essere lo "zampino" del nuovo module-system e che sia necessario altro a livello di build e/o avvio in tal senso.
    Ma dovrei indagare meglio (e non ne sono sicuro) ... magari più tardi faccio una prova.

    Eventualmente fai una ricerca online del testo di errore, magari qualcun'altro è già incappato!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.