Je dois ajouter des options JVM par défaut à mon fichier jar, lors de la compilation avec Gradle . D'après la documentation que j'ai obtenue, je dois définir:
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
Je n'ai pas beaucoup d'expérience avec Gradle et le développeur qui a écrit le fichier build.gradle l'a écrit différemment de ce que la plupart des sites Web donnent comme exemples.
Voici le build.gradle:
apply plugin: 'Java'
apply plugin: 'Eclipse'
version = '0.1'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.+'
compile 'placeholder'
}
task release(type: Jar) {
manifest {
attributes("Implementation-Title": "placeholder",
"Implementation-Version": version,
'Main-Class': 'placeholder.Application')
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}
Je ne sais pas où mettre les arguments. J'ai essayé de les mettre dans des endroits différents, mais j'ai toujours:
A problem occurred evaluating root project 'placeholder'.
> No such property: applicationDefaultJvmArgs for class: org.gradle.api.tasks.bundling.Jar_Decorated
Merci beaucoup, Jhonny
En tête, je peux penser à 2 options:
Option1: Faites ce que @Ethan a dit, cela fonctionnera probablement:
package placeholder;
//your imports
public class Application{
static {
System.getProperties().set("javafx.embed.singleThread", "true");
}
// your code
public static void main(String... args){
//your code
}
}
Option 2: Utiliser le plugin d'application + les valeurs jvm par défaut
build.gradle:
apply plugin: 'application'
//your code
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
Maintenant, vous pouvez exécuter votre code de 2 manières:
De grade
$gradle run
De la distribution (script). à partir du script généré que le plug-in d'application fournira:
$gradle clean build distZip
Ensuite, gradle générera un fichier Zip quelque part sous ${your.projectdir}/build
. Recherchez le fichier Zip, puis décompressez-le et sous /bin
vous trouverez les exécutables ${yourproject}.bat
et ${yourproject}
. L'un est pour Linux/mac/unix (${yourproject}
) l'autre est pour Windows (${yourproject.bat}
)
applicationDefaultJvmArgs est fourni par le plugin Application
. Donc, si vous appliquez ce plugin, l'erreur disparaîtra probablement et vous devriez pouvoir exécuter le programme en émettant gradle run
une fois que vous avez défini la propriété mainClassName sur le nom de classe complet, la méthode principale à invoquer.
vous pouvez utiliser la ligne de commande avec la tâche Gradle:
class AppRun extends JavaExec {
private boolean withDebug
@Option(option = "with-debug", description = "enable debug for the process. ")
public void setDebugMode(boolean debug) {
this.withDebug = debug
}
public boolean getDebugMode() {
return this.withDebug
}
}
task run(type: AppRun) {
}
puis exécutez la tâche avec des options
gradle run --with-debug