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
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? –
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