JavaFX打包工具(javafxpackager)

Wesley13
• 阅读 1231

首先创建一个JavaFX文件,Hello World

package test;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 *
 * @author Administrator
 */
public class Test extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });
        
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}

将文件编译成Class

打成Runnable的jar

执行命令:

javafxpackager -deploy -appclass test.Test -native image -srcdir jardir -outdir outdir -outfile Test

test.Test为Main函数类,jardir为打包的JAR包路径,outdir为打好包的输出路径,Test为生成的exe文件名

会在输出目录下产生bundles文件夹,里面结构如下

JavaFX打包工具(javafxpackager)

这时候点击Test就可以运行了~

打Jar包命令:javafxpackager -createjar -appclass test.Test -srcdir classes -outdir jardir -outfile Test.jar

这个现在IDE一般都支持。

下面是javafxpackager帮助提示:

用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -d32          使用 32 位数据模型 (如果可用)
    -d64          使用 64 位数据模型 (如果可用)
    -server       选择 "server" VM
                  默认 VM 是 server.

    -cp <目录和 zip/jar 文件的类搜索路径>
    -classpath <目录和 zip/jar 文件的类搜索路径>
                  用 ; 分隔的目录, JAR 档案
                  和 ZIP 档案列表, 用于搜索类文件。
    -D<名称>=<值>
                  设置系统属性
    -verbose:[class|gc|jni]
                  启用详细输出
    -version      输出产品版本并退出
    -version:<值>
                  需要指定的版本才能运行
    -showversion  输出产品版本并继续
    -jre-restrict-search | -no-jre-restrict-search
                  在版本搜索中包括/排除用户专用 JRE
    -? -help      输出此帮助消息
    -X            输出非标准选项的帮助
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  按指定的粒度启用断言
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  禁用具有指定粒度的断言
    -esa | -enablesystemassertions
                  启用系统断言
    -dsa | -disablesystemassertions
                  禁用系统断言
    -agentlib:<libname>[=<选项>]
                  加载本机代理库 <libname>, 例如 -agentlib:hprof
                  另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<选项>]
                  按完整路径名加载本机代理库
    -javaagent:<jarpath>[=<选项>]
                  加载 Java 编程语言代理, 请参阅 java.lang.instrument
    -splash:<imagepath>
                  使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
点赞
收藏
评论区
推荐文章
待兔 待兔
2年前
export ,export default 和 import 区别 以及用法
首先要知道export,import,exportdefault是什么ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口import用于在一个模块中加载另一个含有export接口的模块。也就是说使用export命令定义了模块的对外接口以后,其他JS文件就可以通过impor
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java多线程读取、操作List集合
import java.util.ArrayList;import java.util.List;import org.apache.commons.lang3.ArrayUtils;public class Test_4 {/ 多线程处理list
Wesley13 Wesley13
3年前
java8之Stream API(从迭代器到Stream操作)
当你处理集合时,通常会迭代所有元素并对其中的每一个进行处理。例如,假设我们希望统计一个文件中的所有长单词:package java8test;import java.io.IOException;import java.nio.charset.StandardCharsets;import java.nio
Wesley13 Wesley13
3年前
JavaFX开发的2048游戏
自从JavaFX被纳入Java8之后,JavaFX团队决定跳过几个版本,追赶Java8。而如今的JavaFX的与以往的Swing和JavaFX1.2版本已大大不同,为了更加容易理解和开发,JavaFX的改观不容小觑,但仁者见仁,智者见智,对于JavaFX而言,还有多久才能走到大众开发视线,拭目以待。JavaFX开发的2048游戏!
Stella981 Stella981
3年前
POI导入大excel文件
package me.shanzhi.test;import java.io.InputStream;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.apac
Wesley13 Wesley13
3年前
Excel导出工具类.
 Excel导出工具类.POIimport java.io.OutputStream;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.uti
Wesley13 Wesley13
3年前
Java容器——UnsupportedOperationException
    先看一个例子:import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.List;pub
Stella981 Stella981
3年前
Android GridView 添加 HeadView
package com.example.test;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;i
Wesley13 Wesley13
3年前
Java发送和接收广播的UDP,用于探测局域网中指定类型的设备
注意这是发的广播信息,同一网段中其它机器都会收到这个信息(只有特殊的监听这类消息的机器会做出回应):SendUDP.javaimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;impor