0. OpenTCS本地调试开发环境搭建
OpenTCS本地调试开发
本文简单介绍Opentcs的本地开发调试
环境准备
- 我们准备的是Opentcs5.x ,因为老项目的限制,暂时不考虑高版本。
- Openjdk必须是13.x 请格外注意
- 如果要开发GUI界面,必须使用Netbean IDE开发,因为Opentcs用的可视化组件中,很多是Netbean独有的Swing组件,其他的Idea是打不开的。
已知资料链接
快速建立可调试环境
- 下载同版本的 bin的编译过的包,和对应版本的源码。我们可以在不编译的情况下,快速建立调试。
- 如果在windows平台,不管调试哪个组件,都建议修改
start.cmd
【如果默认java就是13.x就不用改】,但是保险起见,建议修改start.cmd里的java指令为全局绝对地址的java,避免莫名其妙的问题。
# 修改
set JAVA=javaw
# 为绝对地址的java
set JAVA="xxxx/javaw.exe"
- 给程序添加断点,方便远程调试【每一种组件的配置方式基本相同,注意暴漏端口不要冲突】
# 修改启动参数:
start /b %JAVA%
# 修改为:
start /b %JAVA% -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:2333
此时,在IDE里远程连接2333端口,即可建立调试。
如果需要调试的代码在启动时会自动初始化,则修改 suspend=n为suspend=y
启动异常问题排查
有些时候,会出现比较棘手的问题,表现为: 控制器、操作台等完全无法启动,执行start.cmd启动后,界面一闪而过,无法正常启动。有两种方式进行排查(一般这2种方式可以排查完所有的严重问题)。
ctbots.com 后面准备出一些针对opentcs的工具包。
一般问题观测日志
如果问题不是很严重,是java程序启动后,因为代码逻辑原因自行退出,则一般有log日志可以看。一般在start.cmd启动脚本同目录的log目录中。
log日志会有按照日期滚动的情况,直接查看最新日志即可。
严重问题修改javaw
可能存在非常严重的问题,例如:jar包缺失、找不到类或者方法、无法序列化、java启动参数错误 等问题。表现为:程序刚刚启动,还没打印任何log日志,就因为程序的完整性原因,直接崩溃。此时,没有日志可供查询。处理步骤如下:
- 使用cmd命令,在黑白屏里启动,此时如果有报错,不会一闪而过。不要双击cmd启动。
- 或者 修改start.cmd脚本,把javaw.exe改成java.exe。java和javaw的区别是:java会在控制台里输入输出标准流信息,javaw会禁用输入输出标准流信息。然后在cmd里手动启动,可以观测到具体的报错信息。
我想自己编译
如果想自己编译,第一个拦路虎就是gradle,如果从maven切换过来的人会觉得奇怪,为啥gradle兼容性这么差。没有科学上网,不做任何配置的情况下,几乎无法编译。
修改gradle的bin包的下载地址
找到项目里的gradle-wrapper.properties 文件,修改配置如下:
distributionUrl=https://mirrors.cloud.tencent.com/gradle//gradle-8.7-bin.zip
注意,不一定是gradle-8.7-bin.zip 需要根据原来的gradle的版本进行动态替换。
配置gradle的下载加速
然后,找到项目中的 gradle.properties 配置加速镜像
# 阿里云 Maven 镜像
repositories.grails.default = https://maven.aliyun.com/repository/public
# Optional, you can add other sources
repositories.grails.default.1 = https://mirrors.tuna.tsinghua.edu.cn/maven/repos/public
# Optional, adding Central repository
repositories.grails.default.2 = https://repo.maven.apache.org/maven2
如果gradle 当前还是卡死的半死不活的,直接终止gradle的sync,重新触发sync即可。