javapackager 将Java打包成可执行文件

发布 : 2019-01-07 分类 : 杂类 浏览 :

Java打包工具,如果需要其他的电脑运行Java程序,是必须安装Java的jre,这就导致运行Java程序是一个很繁琐的工作;而 javapackager 就是帮助解决这个繁琐的安装问题 (吐槽:自带180Mb的jre)

创建一个Java可执行文件

1
2
3
4
5
6
public class Test{

public static void main(String[] args){
javax.swing.JOptionPane.showMessageDialog(null, "hello java");
}
}

编译Java

1
2
mkdir classes
javac *.java -d classes

执行查看效果

1
java -cp classes Test

可以看到弹出框 hello java

打包jar

1
javapackager -createjar -appclass Test -srcdir classes -outdir archive -outfile Test.jar

可以查看到 主目录下的多出一个文件archive 里面有一个 Test.jar
可以双击执行 弹出框显示 hello java

打包exe可执行文件

1
javapackager -deploy -appclass Test -native image -srcdir archive -outdir deploy -outfile Test

这个就很庞大了deploy里面包含了Java的运行环境jre 快200Mb 自己编写的Test不到1Kb -_-!

javapackager用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
 用法: javapackager -command [-options]

其中 command 为以下项之一:
-createjar
打包程序根据其他参数生成 jar 档案。
-deploy
打包程序根据其他参数生成 jnlp 和 html
文件。
-createbss
将 css 文件转换为二进制形式
-signJar
使用提供的证书为 jar 文件签名。
-makeall
将 compilation, createjar 和 deploy 步骤作为一个调用执行,
在其中预定义大多数参数。源必须位于 "src"
文件夹中, 生成的文件 (jar, jnlp, html) 将放入 "dist"
文件夹中。此命令只能以最简单方式配置, 并且
尽可能自动进行。

createjar 命令的选项包括:
-appclass <application class>
要执行的应用程序类的限定名称。
-preloader <preloader class>
要执行的预加载器类的限定名称。
-paramfile <file>
包含默认命名应用程序参数的属性文件。
-argument arg
JNLP 文件的 <fx:argument> 元素中要放入的未命名
参数。
-classpath <files>
相关 jar 文件名列表。
-manifestAttrs <manifest attributes>
附加清单属性列表。语法: "name1=value1,
name2=value2,name3=value3"。
-noembedlauncher
如果存在, 打包程序将不会向 jarfile 添加 JavaFX
启动程序类。
-nocss2bin
在复制到 jar 之前, 打包程序不会将 CSS 文件转换为
二进制形式。
-runtimeversion <version>
所需 JavaFX 运行时的版本。
-outdir <dir>
要将输出文件生成到的目录的名称。
-outfile <filename>
生成的文件的名称 (不带扩展名)。
-srcdir <dir>
待打包文件的基目录。
-srcfiles <files>
srcdir 中的文件的列表。如果省略, 将对 srcdir (在
这种情况下是必需的参数) 中的所有文件进行打包。

deploy 命令的选项包括:
-title <title>
应用程序的标题。
-vendor <vendor>
应用程序的供应商。
-description <description>
应用程序的说明。
-appclass <application class>
要执行的应用程序类的限定名称。
-preloader <preloader class>
要执行的预加载器类的限定名称。
-paramfile <file>
包含默认命名应用程序参数的属性文件。
-htmlparamfile <file>
包含所生成小应用程序参数的属性文件。
-width <width>
应用程序的宽度。
-height <height>
应用程序的高度。
-native <type>
生成自包含的应用程序包 (如果可能)。
如果指定了类型, 则只创建此类型的包。
所支持类型的列表包括: installer, image, exe, msi, dmg, rpm 和 deb。
-name <name>
应用程序的名称。
-embedjnlp
如果存在, 会将 jnlp 文件嵌入 html 文档中。
-embedCertificates
如果存在, 会将证书嵌入 jnlp 文件中。
-allpermissions
如果存在, 应用程序将需要 jnlp 文件中的所有
安全权限。
-updatemode <updatemode>
设置 jnlp 文件的更新模式。
-isExtension
如果存在, srcfile 将被视为扩展。
-callbacks
在生成的 HTML 中指定用户回调方法。格式为
"name1:value1,name2:value2,..."
-templateInFilename
html 模板文件的名称。占位符格式为
#XXXX.YYYY(APPID)#
-templateOutFilename
要将已填充的模板写入到的 html 文件的名称。
-templateId
用于模板处理的应用程序的应用程序 ID。
-argument arg
JNLP 文件的 <fx:argument> 元素中要放入的未命名
参数。
-outdir <dir>
要将输出文件生成到的目录的名称。
-outfile <filename>
生成的文件的名称 (不带扩展名)。
-srcdir <dir>
待打包文件的基目录。
-srcfiles <files>
srcdir 中的文件的列表。如果省略, 将对 srcdir (在
这种情况下是必需的参数) 中的所有文件进行打包。

createbss 命令的选项包括:
-outdir <dir>
要将输出文件生成到的目录的名称。
-srcdir <dir>
待打包文件的基目录。
-srcfiles <files>
srcdir 中的文件的列表。如果省略, 将对 srcdir (在
这种情况下是必需的参数) 中的所有文件进行打包。

signJar 命令的选项包括:
-keyStore <file>
密钥库文件名。
-alias
密钥的别名。
-storePass
用于检查密钥库完整性或对密钥库取消锁定的口令。
-keyPass
用于恢复密钥的口令。
-storeType
密钥库类型, 默认值为 "jks"。
-outdir <dir>
要将输出文件生成到的目录的名称。
-srcdir <dir>
待签名文件的基目录。
-srcfiles <files>
srcdir 中的文件的列表。如果省略, 将对 srcdir (在
这种情况下是必需的参数) 中的所有文件进行打包。

makeAll 命令的选项包括:
-appclass <application class>
要执行的应用程序类的限定名称。
-preloader <preloader class>
要执行的预加载器类的限定名称。
-classpath <files>
相关 jar 文件名列表。
-name <name>
应用程序的名称。
-width <width>
应用程序的宽度。
-height <height>
应用程序的高度。
-v 启用详细输出。

示例用法:

javapackager -createjar -appclass package.ClassName -srcdir classes -outdir out -outfile outjar -v
将类目录的内容打包到 outjar.jar, 将应用程序类设置为 package.ClassName。
javapackager -deploy -outdir outdir -outfile outfile -width 34 -height 43 -name AppName -appclass package.ClassName -v -srcdir compiled
在由 package.ClassName 类启动且大小为 34x43 的 应用程序 AppName 的 outdir 中生成 outfile.jnlp 和对应的 outfile.html 文件。
javapackager -makeall -appclass brickbreaker.Main -name BrickBreaker -width 600 -height 600
此命令执行包含编译在内的所有打包工作: compile, createjar 和 deploy。

本文作者 : zhouinfo
原文链接 : http://blog.zhouinfo.site/2019/01/07/javapackager-%E5%B0%86Java%E6%89%93%E5%8C%85%E6%88%90%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6/
版权声明 : 本博客所有文章除特别声明外,均采用 CC Apache License 2.0 许可协议。转载请注明出处!
留下足迹