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

Linux下安装Gui-Guider (LVGL设计器) GUI Guider是NXP提供的一种用户友好的图形用户界面开发工具,可通过开源LVGL图形库快速开发高质量的显示器 。GUI Guider的拖放编辑器使您可以轻松利用LVGL的许多功能(例如小部件,动画和样式)来创建具有最少编码或根本不需要编码的GUI。 官网地址https://www.nxp.com/design/software/development-software/gui-guider:GUI-GUIDER NXP提供了Linux版和WIN版,但是下载之前需要注册,注册后需要邮箱激活,很.. 阅读详情


怕有些高手看到我的 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不同

nxp gui guider 生成的代码移植到linux系统的arm板上 5.注释掉setup_scr_screen.c文件中的#include "custom.h"再把generated文件夹的子makefile包含进来(在makefile中添加)2.对应lvgl版本(7.1或者8.2,nxp gui 目前只支持这两个)将整个generated文件夹复制到自己的lvgl根目录。找到工程源文件中的generated文件夹。准备:1.已经移植好的lvgl工程。 阅读详情

相关推荐

Windows高效集成Linux开发环境:WSL2配置、优化与实战指南

在跨平台开发实践中,如何在Windows操作系统上无缝使用Linux工具链是开发者面临的核心挑战。传统虚拟机方案存在资源占用高、启动慢等瓶颈,而系统调用翻译或模拟环境则存在兼容性局限。随着容器化与轻量虚拟化技术的发展,Windows Subsystem for Linux (WSL) 通过实现完整的Linux内核,在性能与兼容性上取得了突破性进展,为混合环境开发提供了理想的工程解决方案。WSL 2作为轻量级虚拟机,不仅支持Docker等容器化工具,还能与Windows文件系统高效互通,极大地提升了后端开发、

weixin_34208283的博客 446

GUI-Guider-1.3.1-GA

1.GUI Guider是恩智浦提供的用户友好型图形用户界面开发工具,可通过开源LVGL图形库快速开发高品质的显示。GUI Guider的拖放编辑器可以轻松利用LVGL的众多特性,如小部件、动画和样式来创建GUI,而只需少量代码或根本无需任何代码。大大缩短了开发时间。 2. 1.3版本支持lvlg v7.10.1和v8.0.2,色彩深度新增24bit,模拟器支持C 和MicroPython。 3. 更新到1.3.1

Gui-Guider-Setup-1_1_0-GA.deb

针对lvgl,nxp 给出的类似qt designer的IDE工具,linux ubuntu 20

深入解析APS开源排程工具OptaPlanner:链式结构与移动优化

本文深入解析了开源APS排程工具OptaPlanner的核心机制,重点阐述了链式结构如何作为排程优化的“骨架”,通过单一`previous`变量隐式定义资源与顺序,从而简化建模。文章详细介绍了基于此结构的移动操作(如`ChainChangeMove`)如何驱动优化引擎探索解空间,并自动触发影子变量更新与分数计算,为构建高效、灵活的生产计划系统提供了实践指导。

keras9composer的博客 296

FPGA远程升级避坑实录:用STARTUPE2原语搞定Flash时钟,K7325T实测有效

本文深入解析了FPGA远程升级中的STARTUPE2原语应用,特别针对K7325T芯片的Flash时钟问题提供了实测有效的解决方案。通过详细的原语工作机制、Vivado工程实现步骤及调试技巧,帮助工程师规避常见陷阱,提升远程升级的可靠性和效率。

weixin_42558093的博客 141

Android Profiler实战:如何用CPU分析工具揪出卡顿元凶(附线程状态解读)

本文深入解析Android Profiler中的CPU分析工具,重点聚焦线程活动监控。通过解读线程状态时间轴上的绿、黄、灰三色含义,并结合实战案例,指导开发者精准定位导致界面卡顿的CPU密集型或I/O阻塞代码,有效提升应用性能与用户体验。

weixin_29197699的博客 372

机器学习ROC曲线中的阈值thresholds

在ROC曲线上的不同点对应于不同的阈值。根据任务的具体要求,可以选择合适的阈值,以达到平衡召回率和误报率,或者根据具体应用场景调整模型的工作点。,表示样本属于正例的概率。这个概率值可以被截断为二元分类的决策,通过选择一个阈值来决定样本是被分类为正例还是负例。通过改变阈值,可以得到不同的真正例率(TPR)和假正例率(FPR),从而绘制出ROC曲线。总体来说,ROC曲线提供了模型在不同阈值下的性能综合情况,帮助分析模型的分类能力。通常来说,随着阈值的增加,TPR会减小,而FPR会增加。ROC曲线的绘制涉及。

行子的博客 3654

拌合楼管理软件开发(十一) 海康威视车牌识别摄像头安装调试,总算是跑通了。

/保存的文件个数这里之所以需要用到委托,直接更新textbox文本中的内容,以及复制picturebox的image会提示不是从齐创建的线程调用。

morsth的博客 4813

面试官连夜整理:103道AI Agent面试题,答对一半直接加薪50%

维度AutoGPTLangGraphAutoGen控制流LLM 驱动的隐式循环代码层定义的显式状态图对话驱动的自动流转状态存储Prompt 上下文中(易丢失)结构化 State 对象(可持久化)对话历史(自动累积)分支能力依赖 LLM 的文本输出(不稳定)条件边 + 节点路由(确定性)多 Agent 对话自然分支(涌现式)回溯/回滚无原生支持,只能重新开始原生 Checkpoint 支持时间旅行无全局回滚,单 Agent 可重启人机协同仅人工在关键点介入(需要自定义)原生支持。

weixin_35774598的博客 620

把 LangGraph 当“工作流引擎”用:与传统 BPM 的差异与融合策略

首先,我们来回顾一下有限状态机(FSM)的基本定义——一个 FSM 可以用一个五元组MQΣδq0FMQΣδq0​FQQQ有限状态集合,包含 FSM 所有可能的状态;Σ\SigmaΣ有限输入字母表,包含 FSM 所有可能的输入;δ\deltaδ状态转移函数,定义了 FSM 从当前状态q∈Qq \in Qq∈Q接收输入σ∈Σσ∈Σ后,转移到的下一个状态q′∈Qq' \in Qq′∈Q,即δQ×Σ→QδQ×Σ→Q。

AI 原生应用开发的博客 227

FGC_grasp复现

FGC_GraspNet复现

qq_39568387的博客 385

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

下一篇: 【原创】环境变量path里的<java path>项被其他程序QJ后的办法
CoderAndy
博客等级 码龄18年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值