JavaFx 软件重启功能实现
2022-01-28 17:10
507 查看
本篇使用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) }
使用的话,只需要在VIew的按钮点击事件对应处调用方法即可
button("测试") { action{ restartApp(resources.url("/desc.json")) } }
确保你的resources文件夹,有
desc.json文件(或者是其他文件)
PS:后续会收录到common-controls的库中
相关文章推荐
- 日程功能模块【从建模到代码实现】UML + JavaFX
- C#实现关机、重启、注销功能 2009-2-20
- vs2010 setup 打包 安装 BAT批处理实现自动安装软件功能
- android关机、重启等电源键功能实现
- 使用ViewPager实现android软件使用向导功能实现步骤
- 【Android】Android 调用已安装市场,进行软件评分的功能实现
- Android 实现“调用手机已安装市场,进行软件评分的功能”
- Android App应用调用已安装市场,进行软件评分的功能代码实现
- Android 调用已安装市场,进行软件评分的功能实现
- 在RCP中如何实现软件的锁屏 象Window 一样的锁屏功能
- resin2/resin3如何实现“更新class,服务不重启”这样的功能?
- Android调用已安装市场,实现软件评分的功能
- 使用C#的WebService实现客户端软件的在线升级功能(转)
- [WINDOWS]安全卫士类软件部分功能检查实现
- passtext软件:实现传递文本的功能
- MFC-实现软件程序的重启
- 花生壳软件功能实现猜想
- 会议会展活动管理软件可实现哪些功能
- 用C++/MFC实现P2P和群聊功能的聊天小软件
- 在cocos2d-x下实现查询软件功能