Create standalone JavaFX application (with custom JDK) in Eclipse

As the name suggests, I would like to create a standalone JavaFX application using a different JDK / JRE than the system default. Netbeans is capable of doing this, however I do not yet know how to do it in Eclipse.

Using e (fx) clipse you can generate an assembly file ( build.fxbuild

). With Netbeans, build.xml

you need to add the following to include the JQK in the jar (this is just an example from Oracle ):

<target name="-post-jfx-deploy">
   <fx:deploy width="${javafx.run.width}" height="${javafx.run.height}" 
             nativeBundles="all"
             outdir="${basedir}/${dist.dir}" outfile="${application.title}">
      <fx:application name="${application.title}" mainClass="${javafx.main.class}"/>
      <fx:resources>
          <fx:fileset dir="${basedir}/${dist.dir}" includes="BrickBreaker.jar"/>
      </fx:resources>
      <fx:info title="${application.title}" vendor="${application.vendor}"/>
    </fx:deploy>          
 </target>

      

So, is this possible in Eclipse? And if so, how can I link the JDK to the jar?

Any help is greatly appreciated!

EDIT: Added build output from console

I am working on Mac OSX 10.10.1, Yosemite.

Buildfile: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build.xml
setup-staging-area:
   [delete] Deleting directory /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/externalLibs
   [delete] Deleting directory /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/project
   [delete] Deleting directory /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/projectRefs
    [mkdir] Created dir: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/externalLibs
     [copy] Copying 1 file to /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/externalLibs
    [mkdir] Created dir: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/project
     [copy] Copying 4 files to /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/project
    [mkdir] Created dir: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/projectRefs
do-compile:
   [delete] Deleting directory /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build
    [mkdir] Created dir: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/src
    [mkdir] Created dir: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/libs
    [mkdir] Created dir: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/classes
     [copy] Copying 1 file to /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/libs
     [copy] Copying 4 files to /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/src
    [javac] Compiling 1 source file to /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/classes
     [copy] Copying 3 files to /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/classes
init-fx-tasks:
do-deploy:
     [copy] Copying 1 file to /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/dist/libs
    [mkdir] Created dir: /Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/build/build/classes/META-INF
No base JDK. Package will use system JRE.
Bundler Mac Application Image skipped because of a configuration problem: Main application jar is missing.  
Advice to fix: Make sure to use fx:jar task to create main application jar.
Bundler DMG Installer skipped because of a configuration problem: Main application jar is missing.  
Advice to fix: Make sure to use fx:jar task to create main application jar.
Bundler PKG Installer skipped because of a configuration problem: Main application jar is missing.  
Advice to fix: Make sure to use fx:jar task to create main application jar.
Bundler Mac App Store Ready Bundler skipped because of a configuration problem: Main application jar is missing.  
Advice to fix: Make sure to use fx:jar task to create main application jar.
BUILD SUCCESSFUL
Total time: 2 seconds

      

EDIT: Added generated build.xml file

<?xml version="1.0" encoding="UTF-8"?>
<project name="OctoCash Updater" default="do-deploy" basedir="."  xmlns:fx="javafx:com.sun.javafx.tools.ant">
<target name="init-fx-tasks">
    <path id="fxant">
        <filelist>
            <file name="${java.home}\..\lib\ant-javafx.jar"/>
            <file name="${java.home}\lib\jfxrt.jar"/>
        </filelist>
    </path>

    <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"      
        uri="javafx:com.sun.javafx.tools.ant"
        classpathref="fxant"/>
</target>
<target name="setup-staging-area">
    <delete dir="externalLibs" />
    <delete dir="project" />
    <delete dir="projectRefs" />

    <mkdir dir="externalLibs" />

    <copy todir="externalLibs">
        <fileset dir="/Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater/lib">
            <filename name="gson-2.3.1.jar"/>   
        </fileset>
    </copy>

    <mkdir dir="project" />
    <copy todir="project">
        <fileset dir="/Users/RobinTrietsch/EclipseProjects/octocash-updater/OctoCash Updater">
            <include name="src/**" />
        </fileset>
    </copy>

    <mkdir dir="projectRefs" />
</target>
<target name='do-compile'>
    <delete dir="build" />
    <mkdir dir="build/src" />
    <mkdir dir="build/libs" />
    <mkdir dir="build/classes" />

    <!-- Copy project-libs references -->
    <copy todir="build/libs">
        <fileset dir="externalLibs">
            <include name="gson-2.3.1.jar"/>
        </fileset>
    </copy>

    <!-- Copy project references -->

    <!-- Copy project sources itself -->
    <copy todir="build/src">
        <fileset dir="project/src">
            <include name="**/*"/>
        </fileset>
    </copy>

    <javac includeantruntime="false" source="1.8" target="1.8" srcdir="build/src" destdir="build/classes" encoding="UTF-8">
        <classpath>
            <fileset dir="build/libs">
                <include name="*"/>
            </fileset>
        </classpath>
    </javac>

    <!-- Copy over none Java-Files -->
    <copy todir="build/classes">
    <fileset dir="project/src">
        <exclude name="**/*.java"/>
    </fileset>
    </copy>


</target>
<target name="do-deploy" depends="setup-staging-area, do-compile, init-fx-tasks">
    <delete file="dist"/>
    <delete file="deploy" />

    <mkdir dir="dist" />
    <mkdir dir="dist/libs" />

    <copy todir="dist/libs">
        <fileset dir="externalLibs">
            <include name="*" />
        </fileset>
    </copy>


    <fx:resources id="appRes">
        <fx:fileset dir="dist" includes="OctoCash Updater.jar"/>
        <fx:fileset dir="dist" includes="libs/*"/>
    </fx:resources> 

    <fx:application id="fxApplication"
        name="OctoCash"
        mainClass="octocash.updater.Main"
        toolkit="fx"
    />

    <mkdir dir="build/classes/META-INF" />



    <fx:jar destfile="dist/OctoCash Updater.jar">
        <fx:application refid="fxApplication"/>
        <fileset dir="build/classes">
        </fileset>
        <fx:resources refid="appRes"/>

        <manifest>
            <attribute name="Implementation-Vendor" value="Barotech"/>
            <attribute name="Implementation-Title" value="OctoCash"/>
            <attribute name="Implementation-Version" value="1.0"/>
            <attribute name="JavaFX-Feature-Proxy" value="None"/>
        </manifest>
    </fx:jar>


    <mkdir dir="deploy" />
    <!-- Need to use ${basedir} because somehow the ant task is calculating the directory differently -->
    <fx:deploy
        embedJNLP="false"
        extension="false"
        includeDT="false"
        offlineAllowed="true"
        outdir="${basedir}/deploy"
        outfile="OctoCash Updater" nativeBundles="all"
        updatemode="background" >

        <fx:info title="OctoCash Updater" vendor="Barotech"/>
        <fx:application refId="fxApplication"/>
        <fx:resources refid="appRes"/>
    </fx:deploy>


</target>

      

+3


source to share


2 answers


This is an old question, but I had this problem. I found it difficult to find a solution. By reading a lot of different things, I managed to find a solution. I am using Netbeans, but it should work for Eclipse.

In Netbeans, I scanned the files in the project until I found a file called project.properties. Then I opened the file and went to the line that starts with dist.jar =. Then I will rename the jar file so that it has the same name as the main project file.



In my case, my master named something like helloworld, and my dist.jar is the name hello world.jar. I renamed it helloworld.jar and saved the file. Then I rebuilt the project and recreated the native installers. After that it worked fine.

+2


source


What did you choose as the packaging format? If you choose "All" it will create a standalone installer with JRE included.



+1


source







All Articles