粉丝51获赞262


现在主流的 java ui 开发必然是 java fx 了,那么该如何把我们的项目联通运行环境一起打包并封装好 exe 文件呢?你叫我怎么做,你教教我。接下来我们用一分钟的时间教大家如何将 java ui 程序轻松转换为独立的 exe 文件。 最后我要开始装。第一步,使用 mayven 插件打包直接可运行的 b a t 脚本,先在 promder 三秒里添加 mayven, 依赖此处需要添加两个 plagine。 在第二个插件中把几个项目信息改成自己的即可,大家可以截屏收藏,也可以私信我获取原版。然后执行 mayven 打包我们的项目。在这里使用扎瓦 f x link 来打包,或者在命令行执行 miwen clean 加 f x j link, 使用插件后会给我们打包出来 zip 文件,我们把 zip 解压缩后,会看到下面的目录结构,这时运行环境也一起打包在 zip 文件里了。打开并目录,我们可以看到一个和项目同名的 b a t 文件,双击就可以执行了,这是执行效 效果。可以注意到在程序背后有一个 cmd 窗口,那么接下来就要解决掉它了。第二步,把 bat 脚本转换成 exe, 此时需要下载转换工具, 自行搜索,网上有的是,这是打开之后的样子。接下来先打开 b a t 文件,此处可以替换图标和选择控制台是否可见,接下来点击转换,最后在弹窗的对话框当中填入文件名即可,我们找到这个文件,直接双击就可以运行了。到此就完美解决了扎瓦程序像 e x e 文件的转换。


一个普通的加法项目,我们是否可以把它打成架包,通过加把杠架来运行里边的闷方法,那么我们在 id 中我们这个类可以正常运行,那我们是否可以把它打成架包来运行,那么这个手呢?是可以的, 除了在十分步骤中,我们可以把一个项目打成架包,通过加瓦钢架来运行,那我们一个普通的 mary 项目也可以把它打成架包,然后通过加瓦钢架运行里面的任意方法。那这个时候呢,我们在 mari 里面配置一个插件,哎,就是我们的 mari cidplue 啊,这个插件, 然后指的他的组类,就是问方法那个类在哪里,然后就在打包这个阶段,然后配置一个目标线的,那么这样的话呢,他就可以打一个架包,然后我们这个架包就可以通过加把杠架来去运行,那下面我们来跑 回下,我们通过打包好已经成功了,那这个是我们进入到这个项目的 past 的下, 那么这两个包是一样的,就是我们可以直接通过加法钢架来运行,那么这个包呢?他把一些歪的衣带没有加进来,那么这个包是不能通过加法钢架去运行的,所以下面我们在这里弹出这个窗口,然后我们运行 加法钢架,然后我们这个 past 运行,那么这个时候我们这个可以正常运行的, 和我们在 id 里面是一样的,那下面那个包也是可以运行的,加了钢架,然后 pass 的 杠线的给点架好走,那么他也是可以运行的。好,以上这个呢,就是我们配置一个插件,可以把一个普通的 mary 项目打成一个架包,然后 运行里边的问题方法,所以不仅是十分布的可以打一个价包,通过加瓦钢家具运行。我们普通的 wifi 项目也可以打一个价包,通过加瓦钢家具运行,执行价包里面的卖方法。

哈喽,然后今天给大家分享 id 二里面如何一键部署我们的一个驾包到服务器。好,来我们来演示一下,这里点击我们启动 好,他首先会执行我们 mervin 呃 in store 打打包成一个价包,现在已经 build six s, 然后目前的话正在上传我们的一个价包到服务器 study the transfer, 可以看一下,这里有一台服务器在我们的正在上传, 就相当于这一个呃工具取代了我们的一个 jackens, 实现了一键自动部署 好给上传完成,上传完成他自动会呃 q 之前的一个进程,我们可以看一下他的一个上传完成的一个价包是四点十七分,上传完成之后我们可以访问一下,目前四点十七和这是佛系上面的一个日子, 可以看到和本地是一样的,然后本地也会登录到这台服务器,我们来访问一下,这里有一个接口是在我们这里 ctrl, 那 有的应付 get 啊,有的应付这一个接口,然后我们通过浏览器来访问一下,好,是可以返回数据的,然后同样在我们控制台 也打打印他的一个请求日字,在这个地方打印了一个返回参数。好, ok, 然后觉得有用的可以帮忙点点赞,点点关注,你的支持就是我更新的动力,然后下一期的话我会具体讲如何去配置。好,谢谢大家。

今天威哥给大家解析一道源自阿里一面的面试题,说说 supreme boot 中架包启动的原理。接下来我们就开始解析这道面试题。我们知道 supreme boot 功能之所以强大的原因,除了自动配置提供诸多 stator 约定大于配置、 内置外部服务器等特性外,还可以通过架包的方式直接运行。如果我们要把 spring bot 应用打包成一个可运行的架包,需要依赖官方提供的一个 spring gun bot 刚 melvin gun plugin 的插件。 使用该插件在执行完 mering 的 package 命令后,塔格的目录下会生成如下两个驾保文件, application 点加点耳闻 indoor 是一个原始的价包文件,它仅包含应用程序的本地资源,是个不可运行的价包。它的目录结构如下,买者更音符存放原数据信息,比如用来描述价包信息 p 的 manifas 的点 m f 文件等。 com 文件夹,存放应用程序变异后的 class 文件接下来让我们看一下 application 点加,它是一个由 spring 杠 boot 杠埋稳杠 plugin 插件,对 application 点加点耳轮进斗 引入第三方依赖包瑞排给结后产生的可运行的价包文件。这种将应用程序的类文件和第三方依赖的价包文件打包在一起的加文件,我们称之为 fat。 加它的目录结构如下, bot 杠引爆下的 classes 文件夹存放应用程序编译后的 class 文件。 bot 杠引爆下的莱博文件夹 存放应用程序依赖的第三方价包文件。买点杠 info 文件夹存放原数据信息。 oig 文件夹存放价包启动时需要使用的 supremebod 的相关克拉斯文件默认情况下,一个可执行的价包通 通过加法杠架命令执行后,会使用 a p p classloader 类加载器来加载 mate fast 点 m f 文件中的 man 杠 class 指定的引导启动类,并执行其 man 方法。但是对于 spring boot 插件打包后的这种 fat 加 a p p class loader 则是无法成功加载的,因为它是无法加载架包中的加文件的。那么 sorry bo 的插件打包后的架包是怎么运行的呢?先让我们看一下架包中的 manifest 点 m f 文件。重点看一下第六行和第七行。 第六行中我们可以看到它的 man 杠 class 并不是我们自己开发的启动类,而是一个由 spring bott 定义的 java launcher 启动类。接下来让我们看一下该类是怎么执行的。当然,如果想在自己的项目中查看该类的原码,需要引入 spring 杠 bot 杠 loader 的依赖包。另外它的第七行设置了一 一个 style 杠 class 类,该类才是我们真正自己开发的启动类。接下来让我们看一下驾包的启动原理。首先直行加廊桥的慢方法,它会调用其副类的让其方法。 接下来咱们看一下这个啷切方法,它会首先调用 curio 的 class loader 方法创建一个 launch 的 url class loader 的类加载器,该 class loader 主要负责加载 bot 杠引爆文件夹下的 classes 下的应用程序编译后的 class 文件和 bot info 下的 level 下的应用程序依赖的第三方的驾包文件。 接着 launch 方法调用了一个它的重载方法,该方法首先会把 launch 点 u r o class loader 设置到当前县城中,接着调用了一个 carried my metal 的软点儿方法,并调用了其返回值对象的软方法。 接下来让我们看一下 carried my method runner 的执行,它通过构造方法创建了一个 my method runner 对象。 最后让我们看一下 my master 的软点儿对象的软方法是怎么执行的。 man class 内幕属性其实就是 manifas 的点 m f 文件中的 stat 杠 class 及我们自己开发的启动类。首先获取我们自己开发的启动类的类对象, 并通过反射调用该类的慢方法,这样我们自己的 spring boot 也就真正的开始启动了。 啰嗦了那么多,可能有些小伙伴对于 spring boot 中驾保启动的原理思路还不是那么清晰,没关系,让我们一起再总结一下。一、根据 spring bot 提供的 spring gun bot 杠 m n 杠 plug 插件,把应用程序打包成一个可执行的驾保文件。二、通过加法杠加命令执行该 加保文件。三、首先 g v m 还是会使用 a p p class loader 加载 manda 法则,点 m f 文件中的 manga class 及加廊桥启动类,并执行其 man。 方法四、创建一个浪缺点 url class loader 的类加载器,并设置到当前现场中。 该类加载器的作用就是负责加载 bot 杠银包文件夹下的克拉塞斯文件夹下的应用程序编译后的克拉斯文件和 bot 杠银包下的莱包下的应用程序依赖的第三方驾包文件。 五、通过反射执行获取我们自己开发的启动类的类对象,并执行其慢方法。六、开启 supreme boot 的启动流程。小伙伴们,关注威哥,更多精品内容持续与你分享!

最后啊,来看一个打包的概念啊,代码咱们写完了,最终是不是还有一件事要发布成品啊?那大家想是把这个原文件直接丢给使用者吗?显然不合适吧,最终我们要运行的也是 class 类文件,而不是这种原文件。 那这些 class 类文件呢?它是在这个橙色的名字叫 alt 这个目录下,我们来看一下啊,你把它展开 展开以后啊,你会发现从咱们的顶层拍个纸开始啊,他的目录结构是完全一致的, com itk 码, com itk 码是吧?然后 a 里面是不是就是我们这些个 class 文件啊,但是他没有把那个后缀显示出来,我们可以选中这个文件夹,右键打开于资源管理器 啊,你把它看一眼,是不是它都是这种 class 文件啊?这是找到了啊,那找到以后,那大家说,哎,我把整个这个目录复制一份交给使用者行不行?哎,似乎也不那么专业吧, 一般呀,我们发布这个成品的时候,会把这多个 class la 文件给它打成一个压缩包啊,把这个压缩包交付给用户,那扎瓦中呢,有专门的打包工具,那接下来我们就通过 i 店给同学们来示范一下啊, 大家可以点击文件项目结构进入这样一个窗口,或者呢也可以选择右上角这个齿轮,这里也有这个项目结构,效果是一样的。进到这个窗口以后呢,可以 接下来在项目设置弓箭这个位置啊,点击加号,那这我们就可以选择啊,打成一个 g 二的这种炸包了啊, g 二呢,是炸瓦中的压缩包的格式啊。 啊,那我们可以接下来去选到底是把哪个模块进行一个打包啊?因为你这个项目里可能有多个模块,对吧?好,接下来他就问你要选哪个模块啊?哎,我们这里选猫就医 主类这块呢,是选择整个炸包它的一个入口类是哪个类?好,那我们点击后面这个选择,按名字搜索一下, 比如说我想把咱们写的相对比较完善那个 calculate 三作为主类,调前一个字母,是不是这里就可以选择了?选这个 calculate 三 确定模块选好了,主类选好了,点击确定,再点一下确定。但是注意啊,现在他还没有真正去啊生成那个炸包啊,他是只是把这个炸包的相对设置好了,还没有生成, 要生成炸包再点击构建,然后构建弓箭啊,他就问你是不是要把这个猫就一点炸啊?真正去执行一个打包点击构建啊,这回才是真正打包啊, 打包好了以后啊,它会在 alt 目录里面再多出一个子目录,这里啊就有我们打好的这个猫就一点炸这个炸包,我们可以 从资源管理器里打开看一眼啊,它是一个后缀为啊这儿的这样一个压 压缩文件,你可以用一个压缩软件把它打开看一下打开方式。这我选择一个压缩软件, 可以看到它里面是不是这个包的结构跟我们元代码中包的结构都是一样的。哎, come, it 黑马, it 黑马,对吧?然后 a b, 然后里面有这些 class 啊, 好,那这个炸包将来打好了,我们怎么去运行它呢?当然前提啊,是将来用户那边得装个 j d k 是吧?有了 j d k, 你随便找一个中端工具,比如说这是我的中端工具啊, 我得先把这个目录咱们拷贝一下, 然后在中单工具里面 cd, 然后把刚才的目录粘贴过来,进到这个目录之后啊,我们看一下,第二就是显示这个目录里面的所有内容, 是不是有刚才这个猫就一点差呀?那我们用之前学过的渣命令来运行他,那怎么运行一个炸包呢?你可以运行渣哇,杠 ga 二, 注意啊,他这个颜色呃,不是很明显啊,是一个减号 gr, 后面跟上我们这个模块的名字啊,这个炸包的名字好,回车就可以了。 是不是让你输入本金了?我们输入一个,这是两百万,然后年利率六点零,然后最后还款,月收三百六, 好,回车。说效果跟我们在程序中运行的是类似的呀。当然呢,有一个小细节啊,不知道同学们注意到没有,就是你看这个中文也都正确显示了,但是有一个人民币符号这块是个问号, 这是我们这个终端的问题啊,因为 windows 终端它输出的默认自负器不是 uti 八 啊,不是 u t r 八自负级,它就没有不包含那个人民币符号啊。那我们需要改变一下终端的自负级, 这个是个固定命令, c h c p 六五零零幺,这是把它的自负极设成那种呃, u 八的自负极好,重新运行本金 点,利率好,最后还款页数好,大家看这回人民币符号是不 ok 了。 好,关于这个怎么打包和怎么运行渣包,我们就介绍完了啊。

今天和大家分享一个大家呢平时不怎么关注的一个文件啊,我们大家都知道架包啊,架包下边有 mate e fo 这样的一个目录,熟悉吧,这个目录下通常会有个 mat fast 点 mf 这样的文件,这个文件我们经常见啊,但是我们很少去关注里面内容, 原因是因为什么?我们使用集中开发工具的时候,一般打假包的时候啊,他会自动帮我们生成卖了 fast 点 m m f 文件,那么在这个文件当中,其实描述的就是我们家包相关的信息啊,起到一个描述家包信息的一个这样的一个作用, 那么我们这个文件当中啊,也有可能啊,在有一些时候,如果你手动打架包的话,这个文件的内容是需要你进行配置的啊,那么在这个文件当中,我们通常会配置哪些信息呢?在这里我重点介绍两个属性,一个是闷克拉斯,一个是克拉斯帕斯。这个闷克拉斯呢,其实就是应该指定主类的 啊,因为我们驾包呢,将来有可能会去双击运行,或者说我们通过加把杠诈的这样的命令去执行我们驾包,那么执行我们驾包程序的话,那程序总有一个入口吧,对吧?哎,使用这个闷克拉斯这个属性啊,用来指定我们程序的入口, 另外呢,一个价包的运行有可能会依赖别的价包啊,在哪指定依赖别的价包呢?哎,就在我们的 maxs 的文件当中,指定一个克拉斯帕斯这样的属性,用来指定价包的依赖关系。 下面是一个标准的 mat fas 的 i max 文件啊,像这个就属于 mat fas 的文件的一个版本号,下面这个是属于主类啊,程序的入口下面这个就是我们执行这个程序啊,执行这个驾包吧,他所依赖的别的驾包有哪些?这里呢注意事项要说一下, 在这个 matex 的文件当中写的时候要注意啊,他是由箭直对的方式构成,箭和直之间用什么冒号,用冒号隔开啊,并且非 非常重要,就是冒号后面这个值啊,一定要注意这个空格啊,这个空格一定要加上去,另外下面克拉斯帕斯呢,每个下巴之间啊,一定是用空格隔开的,千万不用逗号,别用冒号,也不用封号啊。好,就说这么多。