Error: Could not find or load main class org.ws.Main

Fermé
newtresor - Modifié le 17 févr. 2021 à 13:55
 newtresor - 17 févr. 2021 à 17:49
Bonjour,

Je suis bloquer depuis 4 jours sur un projet et j'arrive pas à évoluer.
Je travail en java-fx gradle avec intellij, après avoir terminer j'essai de construire un jar image avec 'org.beryx.jlink' version '2.23.1' jusque-la tout va bien seulement lorsque j'execute le jar produit par jlink j'ai l'erreur suivante :

Error: Could not find or load main class org.ws.Main
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application


Voici mon build.gradle :

plugins {
id 'java'
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.9'
id 'org.beryx.jlink' version '2.23.1'
}

group 'org.ws'
version '1.0'
mainClassName = 'org.ws.Main'


repositories {
mavenCentral()
mavenLocal()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}

javafx {
version = "15.0.1"
modules = ['javafx.controls', 'javafx.fxml', 'javafx.base']
}

jar {
doLast {
project.exec {
workingDir destinationDirectory.get()
executable 'jar'
args '--update'
args '--file', archiveFileName.get()
args '--main-class', mainClassName
args '.'
}
}
}

jlink {
addOptions('--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages')
launcher {
name = 'start-app'
customImage {
appModules = [

]
}
jvmArgs = [
'-Dlog4j.debug=true', '-Dlog4j.configurationFile={{BIN_DIR}}/log4j2.xml',
// '--add-reads', 'group.merged.module=mod',
'-cp', '../app/*'
]
}
secondaryLauncher {
name = 'my-additional-app'
mainClass = mainClassName
args = ['--user', 'WinnerGroup']
}
mergedModule {
additive = true
//uses 'ch.qos.logback.classic.spi.Configurator'
}
customImage {
jdkModules = ['java.desktop', 'java.xml', 'jdk.unsupported']
appModules = ['javafx.controls', 'javafx.fxml', 'javafx.base']
}
jpackage {
jpackageHome = 'C:\\Program Files\\Java\\jdk-14.0.2'
outputDir = 'my-packaging'
imageName = 'start-app'
//skipInstaller = true
installerName = 'start-app'
installerType = 'exe'
}
forceMerge('log4j-api')
}
/*
tasks.jlink.doLast {
copy {
from('src/main/resources')
into("$buildDir/image/bin")
}
copy {
from 'C:\\JavaFXSDK\\javafx-sdk-15.0.1\\bin\\glass.dll',
'C:\\JavaFXSDK\\javafx-sdk-15.0.1\\bin\\javafx_font.dll',
'C:\\JavaFXSDK\\javafx-sdk-15.0.1\\bin\\prism_d3d.dll',
'C:\\JavaFXSDK\\javafx-sdk-15.0.1\\bin\\prism_sw.dll'
into("$buildDir/image/bin")
}
}
  • /


Merci d'avance pour votre aide

Configuration: Windows / Chrome 88.0.4324.150

2 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
17 févr. 2021 à 16:42
Bonjour,

Vu ta configuration, tu fais du JDK 14, mais JLink n'existe plus depuis Java 13, il a été remplacé par JPackage en Java 14.
Dans le plugin Beryx que tu utilises il y a une tâche jpackage, à voir s'il ne faudrait pas l'utiliser à la place de la tâche jlink.
https://badass-jlink-plugin.beryx.org
0