I need to add default JVM options to my jar, when build with Gradle. From the documentation I got that I have to set:
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
I have not much experience with Gradle and the developer that wrote the build.gradle file wrote it different from what most websites give as examples.
Here is the 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' }
I don't know where to put the arguments. I tried putting them in different locations, but I always get:
A problem occurred evaluating root project 'placeholder'. > No such property: applicationDefaultJvmArgs for class: org.gradle.api.tasks.bundling.Jar_Decorated
Much Thanks, Jhonny
Try to use ./gradlew -Dorg. gradle. jvmargs=-Xmx16g wrapper , pay attention on -D , this marks the property to be passed to gradle and jvm. Using -P a property is passed as gradle project property.
Yes, right click the project. Click Run as then Run Configurations . You can change the parameters passed to the JVM in the Arguments tab in the VM Arguments box. That configuration can then be used as the default when running the project.
Add VM options for the Gradle project You can specify VM options for your Gradle project using the gradle. properties file. Create or open your Gradle project. In the Project tool window, right-click the project and from the context menu, select New | File.
From the top of my head I can think of 2 options:
Option1: Do what @Ethan said, it'll likely work:
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: Use the application plugin + default jvm values
build.gradle:
apply plugin: 'application' //your code applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
Now you can run your code 2 ways:
From gradle
$gradle run
From distribution(script). from the generated script that the application plugin will provide:
$gradle clean build distZip
Then gradle will generate a zip file somewhere under ${your.projectdir}/build
. Find the zip then unzip it and under /bin
you'll find a ${yourproject}.bat
and ${yourproject}
executables. One is for Linux/mac/unix (${yourproject}
) the other one is for windows (${yourproject.bat}
)
Option 3 (Android Developer): Use gradle.properties to set jvm argument
# Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx1024m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # You can setup or customize it according to your needs and combined with the above default value. org.gradle.jvmargs=-Djavafx.embed.singleThread=true
For more info on how to use gradle build environment on docs.gradle.org
applicationDefaultJvmArgs is provided by the Application
plugin. So if you apply that plugin, the error would probably go away, and you should be able to execute the program by issuing gradle run
once you set the mainClassName property to the fully qualified class name, the main method of which you want to invoke.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With