2017-09-22 6 views
2

Ich versuche, eine Java 9-Modul-Bibliothek mit dem GA Jdk 9 auf einem Debian-System mit Gradle 4.2 zu kompilieren. Um dies zu tun, ich habe gerade das meine Classpath mit ModulePath zu ersetzen:Java 9 Gradle kann javafx Modul finden

compileJava { 
    doFirst { 
     options.compilerArgs = [ 
      '--module-path', classpath.asPath, 
     ] 
     classpath = files() 
    } 
} 

ich alle in der Classpath meine abhängigen librarys haben und sie bekommen in die ModulePath und das funktioniert gut, wenn ich versuche, es zu kompilieren findet alle meine eigenen Bibliotheken.

Das Problem ist jetzt, dass das Projekt auch javafx verwendet. In Java 8 war jfxrt.jar in der jdk enthalten und war soweit ich weiß im Standardklassenpfad. Für Java 9 i rot, dass es jetzt auch modularisiert und enthalten ist.

Aber wenn ich versuche, das Modul zu kompilieren, sagt der Compiler mir, dass er javafx Module finden können:

.../src/module-info.java:10: error: module not found: javafx.controls 
     requires javafx.controls; 
        ^

Unter Windows funktioniert es ohne javafx fein in der ModulePath beeing

Jdk einschließlich javafx: http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

+4

Der Debian-Build enthält möglicherweise nicht die JavaFX-Module. 'java --list-modules' listet die Module im Runtime-Image auf, gibt es javafx. * Module aufgelistet? –

+1

Vielen Dank, meine --list-Module enthielten keine javafx. * Module. Es scheint, dass ich nicht die richtige jdk heruntergeladen habe. Ich habe meine Jdk von http://jdk.java.net/9/. Dieses Jdk scheint javafx-Module nicht zu enthalten. Der eine von der Orakel-Seite enthält es, damit funktioniert es jetzt – Ben

Antwort

3

der Grund, warum der Compiler nicht javafx Module auf einem debian-System findet ohne

aber funktioniert unter Windows Fein

ist wahrscheinlich als in der Operating Systems Zertifizierung Konfiguration aufgeführt. Anders als die Liste der Module bestätigt java --list-modules Verwendung als durch @Alan in Kommentaren vorgeschlagen tun sicher:

Für Linux-Plattformen gtk2 2.18+ unterstützt JavaFX erforderlich ist.


Das Dokument besagt auch die JavaFX Graphics and Media Support Details, wenn Ihre Anwendung als auch diejenigen verwenden könnten.

+0

Ich weiß nicht, ob das wichtig ist, wenn Sie nur versuchen, etwas zu kompilieren und nicht auszuführen. Stellt sich heraus, ich habe die Open-Source-JDK-Builds und sie enthalten nicht javafx – Ben

+0

* einfach versuchen, etwas zu kompilieren und nicht ausführen * es spielt eine Rolle, denn wenn der Code nicht kompiliert wird es nicht in eine ausführbare Datei umgewandelt werden bilden. Auch @Ben kannst du gerne die Antwort mit dem richtigen Link zu dem Build, den du heruntergeladen hast, aktualisieren und haben funktioniert. Das würde die Antwort hilfreicher machen. – nullpointer

Verwandte Themen