JavaFx 软件重启功能实现
本篇使用Kotlin在TornadoFx中实践,没有Java代码的示例,各位自行参考,思路已在本文中提及
实现思路
主要思路为,使用命令行执行java命令,重新打开jar包,同时关闭当前的jar包
但如何知道当前jar包位置?
前面这一篇Kotlin/Java 读取Jar文件里的指定文件 | Stars-One的杂货小窝也有所讲解到,我们可以获得jar包中的具体的文件
但是上一篇写的前提是,已知到一个jar包文件的目录,但目前我们不会知道用户把jar包放在何处,所以就不明确jar包的位置
但是也有方法,我们在jar包使用个资源文件,之后根据此资源文件即可定位到路径
在jar包如果获取resources的资源,可以得到下面的一个url字符串
jar:file:/D:/project/javafx/lanzou-downloader/out/test.jar!/desc.json
对其进行字符串处理,即可得到当前jar包文件位置
Kotlin实现
Kotlin主要是在TornadoFx的环境写的,用了TornadoFx相关的工具方法
当然,由于没使用linux系统测试过,下面存在有未实践过的代码,请各位知悉
java.exe和javaw.exe区别:
java主要是命令行使用,而javaw,则是对应java应用程序(有UI)
源码
/**
* 获取当前jar包的文件路径
*
* @param url 在View中使用resources.url("")获取的参数
* @return
*/
fun getCurrentJarPath(url: URL): File {
val filePath = url.path.substringBeforeLast("!/")
return File(URI.create(filePath))
}
/**
* 重启当前应用
*
* @param url 在View中使用resources.url("")获取的参数
*/
fun restartApp(url: URL) {
val jarFile = getCurrentJarPath(url)
//开启新应用
Runtime.getRuntime().exec("cmd.exe /c javaw -jar ${jarFile.path}")
//关闭当前应用
Platform.exit()
}
/**
* 打开指定jar文件
*
* @param jarFile
*/
fun openApp(jarFile: File) {
if (jarFile.extension.toLowerCase() == "jar") {
if (isWin()) {
Runtime.getRuntime().exec("cmd.exe /c javaw -jar ${jarFile.path}")
} else {//linux或mac(未实践过)
Runtime.getRuntime().exec("javaw -jar ${jarFile.path}")
}
}
}
/**
* 当前系统是否为window系统
*/
fun isWin(): Boolean {
val prop = System.getProperties()
val os = prop.getProperty("os.name")
return os.contains("win", true)
}
JavaFx 软件重启功能实现的更多相关文章
- Winform 注册机通用软件注册功能之建立有效的软件保护机制
本文转载:http://www.cnblogs.com/umplatform/archive/2013/01/23/2873001.html 众所周知,一些共享软件往往提供给使用者的是一个功能不受限制 ...
- OD调试6—使未注册版软件的功能得以实现
OD调试6—使未注册版软件的功能得以实现 本节使用的软件下载链接 (想动手试验的朋友可以下载来试试) 继续开始我OD调试教程的学习笔记. 本次试验对真正的程序进行逆向.(之前的都是为破解而专门设计的小 ...
- 简单实现wc.exe软件基本功能
简单实现wc.exe软件基本功能 软件需求分析: 一.基本功能 支持 -c 统计字符数(char count) 支持 -w 统计单词数(word count) 支持 -l 统计总行数(line ...
- php -- 实现linux关机、重启功能
有时候,我们自己可以DIY一个控制面板实现linux的关机重启功能.众所周知,linux是一个基于文件的操作系统,所以要实现系统的关机重启功能必须满足以下两点 一.知道命令的绝对路径 在linux下操 ...
- CentOS版本禁用Ctrl+Alt+Del重启功能
1 禁用Ctrl+Alt+Del重启功能(不重启系统的前提条件) 1.1 CentOS 6 ##查看/etc/inittab确认Ctrl+Alt+Del相关配置文件 cat /etc/initta ...
- Autodesk Maya 2019 for Mac(三维动画软件)最新功能介绍
Autodesk Maya是美国Autodesk公司出品的世界顶级的三维动画软件,应用对象是专业的影视广告,角色动画,电影特技等.Maya功能完善,工作灵活,易学易用,制作效率极高,渲染真实感极强,是 ...
- STM32单片机的软件重启和远程重启
STM32单片机可以通过以下代码实现重启(core_cm3.h).同时如果利用AT命令进行无线通讯,服务器后台和客户端之间用MODBUS通讯即4G+MODBUS RTU,可以利用F05写单个线圈的方法 ...
- QT实现软件重启
//重启软件 void MainWindow::on_pushButton_UI_reboot_clicked() { //方式1 需要主函数中事件循环判断 //qApp->exit(773); ...
- Android调用系统关机与重启功能
我是在android源码里编译的package/apps/,因为需要调用的关机接口是不对上层开放的,在eclipse里面不能调用. 我主要是介绍调用android的关机功能,因为在调试过程中,关机的一 ...
随机推荐
- 【LeetCode】935. Knight Dialer 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划TLE 空间换时间,利用对称性 优化空间复杂 ...
- 【LeetCode】919. Complete Binary Tree Inserter 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址: https://leetcode. ...
- 1080 - Binary Simulation
1080 - Binary Simulation PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 64 ...
- D. Persistent Bookcase(Codeforces Round #368 (Div. 2))
D. Persistent Bookcase time limit per test 2 seconds memory limit per test 512 megabytes input stand ...
- 难搞的偏向锁终于被 Java 移除了
背景 在 JDK1.5 之前,面对 Java 并发问题, synchronized 是一招鲜的解决方案: 普通同步方法,锁上当前实例对象 静态同步方法,锁上当前类 Class 对象 同步块,锁上括号里 ...
- Second Order Optimization for Adversarial Robustness and Interpretability
目录 概 主要内容 (4)式的求解 超参数 Tsiligkaridis T., Roberts J. Second Order Optimization for Adversarial Robustn ...
- electron串口通信使用serialport安装报错
1.报错信息没有安装python环境 1 gyp ERR! find Python 2 gyp ERR! find Python Python is not set from command line ...
- Java+Eclipse+MySQL+Swing实现学生会考成绩管理系统(免费完整项目)
版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.需求开发文档 二.数据库设计文档 三.功能模块部分代码及效果展示 四.完整源码下载 五.作者Info 一.需求开发文档 项目完整文件列表: ...
- 浅议像素化与体素化Part.1——平面图形像素化
什么是像素化 学计算机的人往往都比较清楚图形和图像的区别,而且往往能够从数据结构的角度理解这两者的区别,一般来说,图形是由几何空间中的基本图元所组成,表现为用外部轮廓线条勾勒成的矢量图.例如由计算机绘 ...
- CSS基础 背景图片的相关属性
属性名: background-size: 宽度 高度; 属性值 说明 数字+px 简单方便,常用 百分比 相当于盒子自身的百分比,如:百分百,就是就算是图片变形也要显示 contain 动比例缩放, ...