I have a basic JavaFX project set up in IntelliJ:
The project uses Gradle for dependency management. The dependency that was added by my is javax.mail.api as you can see in the build.gradle file here:
plugins { id 'java' id 'application' id 'org.openjfx.javafxplugin' version '0.0.13' id 'org.beryx.jlink' version '2.25.0' } group 'com.contoso' version '1.0-SNAPSHOT' repositories { mavenCentral() } ext { junitVersion = '5.9.0' } sourceCompatibility = '18' targetCompatibility = '18' tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } application { mainModule = 'com.contoso.portwatcher' mainClass = 'com.contoso.portwatcher.Application' } javafx { version = '18.0.1' modules = ['javafx.controls', 'javafx.fxml'] } dependencies { testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}") implementation group: 'javax.mail', name: 'javax.mail-api', version: '1.6.2' } test { useJUnitPlatform() } jlink { imageZip = project.file("${buildDir}/distributions/app-${javafx.platform.classifier}.zip") options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages'] launcher { name = 'app' } } jlinkZip { group = 'distribution' }
The iissue I have now is that when trying to execute to programm with the following run configuration:
I get the following exception:
The module-info.java file specifies the added dependency module:
module com.contoso.portwatcher { requires javafx.controls; requires javafx.fxml; requires javax.mail.api; opens com.contoso.portwatcher to javafx.fxml; exports com.contoso.portwatcher; }
My question is why the module cannot be found?
Thank you for your patience and help.
Advertisement
Answer
The mail API jar from your dependency doesn’t define a module-info.class
.
The new Jakarta mail API does define the file. Migrate your usage of javax.mail
to jakarta.mail
packages and use the updated artifact, should work then.