【原创】记一个Java GUI程序(原目标OS是Windows)“移植”到Linux的过程

Java GUI程序移植到Linux:无GUI版本的实现与调试
本文记录了一个原本为Windows设计的Swing GUI程序移植到Linux的过程,主要涉及UI剥离、命令行接口创建、路径与资源处理、系统差异等问题。在移植中,解决了路径、日志文件释放、DES解密、进程检测和IP检测等跨平台差异,并分享了在Windows和Linux上调试的经验。


怕有些高手看到我的 Java+移植 关键词,立马走人,我特别说明一下:

我要移植的这个程序,原来是针对Windows开发的、有GUI界面的(Swing)、执行定时任务的单机程序,现在为了运行更稳定(Windows机器经常被人重启),要移植到Linux下,而且不再需要GUI界面。


下面是我的需求和思路:

1,理清程序的执行、调用主线(因为距离程序初次开发已经过去若干年了,需要回忆一下);

2,理清UI之外的程序主线,程序主体功能与UI的交互;

3,将UI相关程序弃之不用,新写命令行程序调用程序主体功能;

4,修改后,在Windows上调试通过(因为当年开发时是XP时代,现在是Win7+的时代,有些小区别);

5,在Linux上调试通过。


上述思路在实践过程中,还算比较顺利,毕竟理论上讲,Java程序是天生可“移植”的。所以在移植过程中,主要是一些与OS相关的细节问题处理,有一些事前想到的,有一些没有想到,通通罗列如下:

想到的:

1,路径问题。需要将硬编码的Windows下相对路径,使用File.separator替代;

2,资源释放问题。因为程序执行过程中会写日志,涉及日志文件的释放问题。

在Windows上,需要执行System.exit(0),日志文件才会被释放,否则,即使程序的GUI界面被X掉,日志文件仍然被锁定(表现为:移不走,删不掉),查看资源管理器,可以看到程序对应的Java虚拟机(java.exe)实例还在。


在Linux下不存在这个问题,日志文件随时都可以从程序外部修改(甚至删除)——甚至程序正在运行中时,日志文件也可以删除。但这样做纯属蛋疼、自找麻烦,log4j不会重新建立日志文件,它直接摞挑子不写日志了——所以可以放心地kill掉程序对应的进程,不执行System.exit(0)没有(至少目前没发现)副作用。


没想到的:

3,DES解密,Windows与Linux不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值