How to create a modular JavaFX11 runnable jar/exe?
I have successfully followed the instructions mentioned in openjfx-docs (using maven)
I'm able to run it in my eclipse. I'm also able to create custom runtime images using jlink. The application could be run through the generated launcher.
Now, how do we create a runnable jar/exe with the stripped down JRE generated by jlink?
java javafx jlink javafx-11
add a comment |
I have successfully followed the instructions mentioned in openjfx-docs (using maven)
I'm able to run it in my eclipse. I'm also able to create custom runtime images using jlink. The application could be run through the generated launcher.
Now, how do we create a runnable jar/exe with the stripped down JRE generated by jlink?
java javafx jlink javafx-11
If you've built your run-time image, you can share them asjmods
for the users consuming on Java9 or above that should work fine. I mean the example if JavaFX itself distributingjmods
and.jar
files for its consumption.
– nullpointer
Nov 23 '18 at 20:51
add a comment |
I have successfully followed the instructions mentioned in openjfx-docs (using maven)
I'm able to run it in my eclipse. I'm also able to create custom runtime images using jlink. The application could be run through the generated launcher.
Now, how do we create a runnable jar/exe with the stripped down JRE generated by jlink?
java javafx jlink javafx-11
I have successfully followed the instructions mentioned in openjfx-docs (using maven)
I'm able to run it in my eclipse. I'm also able to create custom runtime images using jlink. The application could be run through the generated launcher.
Now, how do we create a runnable jar/exe with the stripped down JRE generated by jlink?
java javafx jlink javafx-11
java javafx jlink javafx-11
edited Nov 23 '18 at 20:51
nullpointer
48.5k11101195
48.5k11101195
asked Nov 23 '18 at 20:13
Francis Fredrick ValeroFrancis Fredrick Valero
349513
349513
If you've built your run-time image, you can share them asjmods
for the users consuming on Java9 or above that should work fine. I mean the example if JavaFX itself distributingjmods
and.jar
files for its consumption.
– nullpointer
Nov 23 '18 at 20:51
add a comment |
If you've built your run-time image, you can share them asjmods
for the users consuming on Java9 or above that should work fine. I mean the example if JavaFX itself distributingjmods
and.jar
files for its consumption.
– nullpointer
Nov 23 '18 at 20:51
If you've built your run-time image, you can share them as
jmods
for the users consuming on Java9 or above that should work fine. I mean the example if JavaFX itself distributing jmods
and .jar
files for its consumption.– nullpointer
Nov 23 '18 at 20:51
If you've built your run-time image, you can share them as
jmods
for the users consuming on Java9 or above that should work fine. I mean the example if JavaFX itself distributing jmods
and .jar
files for its consumption.– nullpointer
Nov 23 '18 at 20:51
add a comment |
1 Answer
1
active
oldest
votes
I just recently started experimenting with the jlink
tool of Java 11 and can provide a partial answer. The java
command in the bin directory of a custom runtime image works just like java
of the standard JRE:
/path/to/custom/runtime/image/bin/java -jar myjar.jar
The custom runtime image must of course contain all the required dependencies, which I made sure by making myjar.jar a modularized JAR and by providing the switch
--add-modules myjar.jar
when creating the custom runtime image with jlink
. With the additional switch
--launcher mylaunchername=modulename.of.my.jar/mypackage.with.MainClass
the directly executable binary
/path/to/custom/runtime/image/bin/mylaunchername
is generated. On my Mac, I created an alias and moved that to the desktop. That's as close to an application as I could get so far, with the following caveats:
- The app icon is the standard green "exec"
- double clicking on this icon launches a terminal, which is undesirable in case of a JavaFX application
- And, of course, the "application" is not a single file, but the complete custom runtime image folder.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53452477%2fhow-to-create-a-modular-javafx11-runnable-jar-exe%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I just recently started experimenting with the jlink
tool of Java 11 and can provide a partial answer. The java
command in the bin directory of a custom runtime image works just like java
of the standard JRE:
/path/to/custom/runtime/image/bin/java -jar myjar.jar
The custom runtime image must of course contain all the required dependencies, which I made sure by making myjar.jar a modularized JAR and by providing the switch
--add-modules myjar.jar
when creating the custom runtime image with jlink
. With the additional switch
--launcher mylaunchername=modulename.of.my.jar/mypackage.with.MainClass
the directly executable binary
/path/to/custom/runtime/image/bin/mylaunchername
is generated. On my Mac, I created an alias and moved that to the desktop. That's as close to an application as I could get so far, with the following caveats:
- The app icon is the standard green "exec"
- double clicking on this icon launches a terminal, which is undesirable in case of a JavaFX application
- And, of course, the "application" is not a single file, but the complete custom runtime image folder.
add a comment |
I just recently started experimenting with the jlink
tool of Java 11 and can provide a partial answer. The java
command in the bin directory of a custom runtime image works just like java
of the standard JRE:
/path/to/custom/runtime/image/bin/java -jar myjar.jar
The custom runtime image must of course contain all the required dependencies, which I made sure by making myjar.jar a modularized JAR and by providing the switch
--add-modules myjar.jar
when creating the custom runtime image with jlink
. With the additional switch
--launcher mylaunchername=modulename.of.my.jar/mypackage.with.MainClass
the directly executable binary
/path/to/custom/runtime/image/bin/mylaunchername
is generated. On my Mac, I created an alias and moved that to the desktop. That's as close to an application as I could get so far, with the following caveats:
- The app icon is the standard green "exec"
- double clicking on this icon launches a terminal, which is undesirable in case of a JavaFX application
- And, of course, the "application" is not a single file, but the complete custom runtime image folder.
add a comment |
I just recently started experimenting with the jlink
tool of Java 11 and can provide a partial answer. The java
command in the bin directory of a custom runtime image works just like java
of the standard JRE:
/path/to/custom/runtime/image/bin/java -jar myjar.jar
The custom runtime image must of course contain all the required dependencies, which I made sure by making myjar.jar a modularized JAR and by providing the switch
--add-modules myjar.jar
when creating the custom runtime image with jlink
. With the additional switch
--launcher mylaunchername=modulename.of.my.jar/mypackage.with.MainClass
the directly executable binary
/path/to/custom/runtime/image/bin/mylaunchername
is generated. On my Mac, I created an alias and moved that to the desktop. That's as close to an application as I could get so far, with the following caveats:
- The app icon is the standard green "exec"
- double clicking on this icon launches a terminal, which is undesirable in case of a JavaFX application
- And, of course, the "application" is not a single file, but the complete custom runtime image folder.
I just recently started experimenting with the jlink
tool of Java 11 and can provide a partial answer. The java
command in the bin directory of a custom runtime image works just like java
of the standard JRE:
/path/to/custom/runtime/image/bin/java -jar myjar.jar
The custom runtime image must of course contain all the required dependencies, which I made sure by making myjar.jar a modularized JAR and by providing the switch
--add-modules myjar.jar
when creating the custom runtime image with jlink
. With the additional switch
--launcher mylaunchername=modulename.of.my.jar/mypackage.with.MainClass
the directly executable binary
/path/to/custom/runtime/image/bin/mylaunchername
is generated. On my Mac, I created an alias and moved that to the desktop. That's as close to an application as I could get so far, with the following caveats:
- The app icon is the standard green "exec"
- double clicking on this icon launches a terminal, which is undesirable in case of a JavaFX application
- And, of course, the "application" is not a single file, but the complete custom runtime image folder.
answered Nov 25 '18 at 15:44
Martin MählyMartin Mähly
315
315
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53452477%2fhow-to-create-a-modular-javafx11-runnable-jar-exe%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
If you've built your run-time image, you can share them as
jmods
for the users consuming on Java9 or above that should work fine. I mean the example if JavaFX itself distributingjmods
and.jar
files for its consumption.– nullpointer
Nov 23 '18 at 20:51