import javafx.fxml* bei JavaFX 13 geht nicht mehr

Joob

Top Contributor
Ich habe auf JavaFX 13 geändert.

Im gradel.build habe ich alle Module geladen, explizit fxml

siehe hier
javafx {
version = "13"
modules = [ 'javafx.base' ]
modules = [ 'javafx.controls' ]
modules = [ 'javafx.fxml' ]
modules = [ 'javafx.graphics' ]
modules = [ 'javafx.media' ]
modules = [ 'javafx.swing' ]
modules = [ 'javafx.web' ]
}

kann jemand den Grund für den Fehler erkennen ?

12446

Man sieht ja die anderen kennt er. Warum dann nicht fxml, das wird auch nicht angeboten.

12447

Kann mir jemand auf die Sprünge helfen ?
Ich finde auch im Internet nichts hilfreiches .
 
Was mir aufgefallen ist :

die Module : fxml und swing werden nicht geladen.
Das wird der Grund sein, aber wie kann ich das ändern, gradle.build ist doch korrekt oder sieht jemand einen Fehler

12449

Code:
plugins {
  id 'application'
  id 'org.openjfx.javafxplugin' version '0.0.8'
}

apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'application'


repositories {

//    mavenCentral()
    jcenter()
//    maven{url "http://jasperreports.sourceforge.net/maven2/"}
//    maven{url "http://jaspersoft.artifactoryonline.com/jaspersoft/third-party-ce-artifacts/"}
    
}

configurations {
    jasperreports {
        transitive = true
    }
}

//gradle.projectsEvaluated {
//    processResources.dependsOn(compileJasperReports)
//}


dependencies {
    
    compile group: 'org.json', name: 'json', version: '20171018'
    compile group: 'com.jcraft', name: 'jsch', version: '0.1.44-1'
    compile group: 'commons-net', name: 'commons-net', version: '3.6'
//    compile group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.1.0'
    
//    jasperreports 'net.sf.jasperreports:jasperreports:5.6.0','org.codehaus.groovy:groovy-all:2.3.6'
    
    testCompile 'junit:junit:4.12'
//    implementation files('libs/jsch-0.1.55.jar')
//    implementation files('libs/java-json.jar')
//    implementation files('libs/jl1.0.1.jar')
    
}


//task compileJasperReports {
//    def jasperSourceDir = file('src/main/jasperreports')
//    ant {
//        taskdef(name: 'jrc', classname: 'net.sf.jasperreports.ant.JRAntCompileTask', classpath: configurations.jasperreports.asPath)
//        sourceSets.main.output.classesDir.mkdirs()
//        jrc(srcdir: jasperSourceDir, destdir: sourceSets.main.output.classesDir) {
//            classpath(path: sourceSets.main.output.classesDir)
//            include(name: '**/*.jrxml')
//        }
//    }
//}

javafx {
    version = "13"
    modules = [ 'javafx.base'  ]
    modules = [ 'javafx.controls' ]
    modules = [ 'javafx.fxml' ]
    modules = [ 'javafx.graphics' ]
    modules = [ 'javafx.media' ]
    modules = [ 'javafx.swing' ]
    modules = [ 'javafx.web' ]
}

mainClassName = 'org.joobsoft.vt.MAIN.Main'
 

Anhänge

  • 1570289811770.png
    1570289811770.png
    7,3 KB · Aufrufe: 36
Javascript:
javafx { 
  version = "13"
  modules = [ 'javafx.base' ]
  modules = [ 'javafx.controls' ]
  modules = [ 'javafx.fxml' ]
  modules = [ 'javafx.graphics' ]
  modules = [ 'javafx.media' ]
  modules = [ 'javafx.swing' ]
  modules = [ 'javafx.web' ]
}
Dir ist klar, dass du jedes mal die Modulliste überschreibst, oder? Am Ende hast du nur javafx.web (und deren transitive Abhängigkeiten - also wohl controls und base) in der Modulliste.

Es müsste abgeändert werden:
Javascript:
javafx { 
  version = "13"
  modules = [ 'javafx.base', 'javafx.controls', 'javafx.fxml', 'javafx.graphics', 'javafx.media', 'javafx.swing', 'javafx.web' ]
}
Und ich muss jetzt mal etwas ätzend sein, denn das sind eigentlich Programmier-Basics, die man drauf haben müsste...

Wie man es z.B. auch in den Client-Samples von Gluon selbst sehen kann:
https://github.com/gluonhq/client-samples/blob/master/Gradle/HelloFXML/build.gradle
 
Ich verwende Gradle seit vier Tagen.
Ich hatte die Notation gesehen und ausprobiert aber nicht gewußt das man die Source dann erst neu laden musste.
Dadurch war ich der Meinung das diese Schreibweise egal ist, zumal beim neuen Laden auch immer die anderen Module
vorhanden waren.

Aber noch eine Frage : Wie soll man wissen was die Schreibweise aussagt, hätte doch ach sein können das Gradle die Module immer dazu läd.

Auf jeden Fall recht herzlichen Dank.

Ich habe gerade alles upgedatet und weiß gar nicht wo ich mit der Fehlersuche anfangen soll.
 
Gradle setzt auf Groovy, also einer JVM-Sprache, auf. Groovy ist - soweit ich weiss - in der Lage, dass man Java-Code embedden kann (habe das bisher nur für Kleinigkeiten, wie etwa Property-Dateien laden, ausgenutzt). Dafür muss aber die Syntax recht ähnlich sein. Wenn du dich also an Arrays von Primitiven Datentypen und Strings erinnerst, dass man sie per array = [ elem1, elem2, ... ] initialisieren kann und dass ein erneutes setzen von einer Variable bisherige Inhalte überschreibt/ersetzt (was in so ziemlich jeder Programmiersprache so ist), wärst du auf der richtigen Spur gewesen.
Nun hätte man natürlich noch Konstrukte wie array += nextElement probieren können (weiss aber nicht, ob Groovy das kann). Aber sei's drum.
Das wichtige ist: Der Import stimmt nun, und du kannst weitermachen.
 
Ja schönen Dank für deine Mühe.

Hast du vielleicht noch einen Link wo ich sehen kann wie man Gradle sagt das es JasperReports implementieren soll.
Immer wenn ich :

compile group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.1.0'

einbaue, fliegen mir fx und eine paar andere Libaries um die Ohren.
 

Zurück
Oben