0
点赞
收藏
分享

微信扫一扫

网络工程师笔记15(OSPF协议-2)

代码小姐 03-23 07:30 阅读 2

文章目录

macOS应用程序结构

macOS通常以dmg或pkg作为软件发行包,安装到/Applications下后,结构比较统一。
info.plist里的CFBundleExecutable字段可以指定入口,如果不指定,则MacOS下必须存在同名可执行文件。即abc.app下必须存在abc.app/MacOS/abc文件。

极简结构如下:
在这里插入图片描述

Java应用打包

工具有几个:JDK自带的javapackager,之前的还有JavaAppLauncher等。最新的JDK提供jpackager打包工具。

JavaAppLauncher

先看一个打包后的结构:
在这里插入图片描述
注意,这个JavaAppLauncher来自于JDK(src/macosx/bundle/JavaAppLauncher/src/JavaAppLauncher.m)。所以上面包把JDK也一起打进去了。其它第三方工具如jar2app也是利用了这个JavaAppLauncher程序。

使用jar2app:

python ./jar2app.py -r /opt/jdk1.7.0_45.jdk --main-class com.icool.ui.MainWindow javaui.jar

jpackage

JDK模块化后,对打包是有帮助的。可以只打包部分JRE组件:

## 先创建一个smalljre
jlink --add-modules java.base,java.desktop,java.sql --output smalljre
## 再创建安装包
jpackage --name myapp -t app-image --input . --main-jar javaui.jar --main-class com.icool.ui.MainWindow --runtime-image smalljre

打包完后的结构如下:
在这里插入图片描述
其中myapp是一个可执行文件。

其它相关JDK命令

附录

JavaAppLauncher源码

主要就是定位到JRE,然后启动JVM。

#import "JavaAppLauncher.h"

#import <dlfcn.h>

#import "jni.h"

#define kLaunchFailure "JavaAppLauncherFailure"


typedef jint (JNICALL *CreateJavaVM_t)(JavaVM **pvm, void **env, void *args);
typedef void (JNICALL *SetPreferredJVM_t)(const char *prefJVM);


@impl
举报

相关推荐

0 条评论