文章目录
openpnp - 调试环境搭建 - use eclipse for java - v2
概述
为了学习openpnp工程,做了调试环境搭建的笔记(openpnp - 调试环境搭建 - use eclipse for java)
今天新导入了一次工程,有如下问题:
- 工程编译不过
- 偶然编译过了(不记得自己怎么配置的了),运行时,写machine.xml失败。
扑腾了一会,弄明白了,大概有5点要注意的地方。然后就可以正常编译,调试,或者运行。
记录一下。
笔记
调试环境
JDK
看openpnp工程的日志,用sourcetree搜索,可以看到,作者是用openjdk作为JDK, 而不是用其他版本的JDK.

从https://adoptium.net/zh-CN/temurin/releases下载了所有的LTS版本。

都试了一下,最终选用的JDK为OpenJDK11U-jdk_x64_windows_hotspot_11.0.30_7.zip
JDK的版本只能用这个,否则openpnp工程编译不过。
eclipse

eclipse-java-2025-12-R-win32-x86_64 这个就是最近的版本,一直在用这个版本做实验。
启动eclipse时,要用管理员身份启动。否则操作文件时,可能权限不够。
要修改 .gitignore
用eclipse导入工程后,会在工程目录中留下配置文件。如果配置的不合适,当再次导入工程时,这些配置有副作用。如果配置的不合适,会导致工程编译不过。
将.gitignore改为空,这样任何原因导致的工程git目录的文件变化都可以用sourcetree看到。如果出现编译失败,运行失败,可以将无关的文件删掉,然后重新配置eclipse.


导入工程
eclipse启动时,要以管理员身份启动。

eclipse的工作区,最好选一个新的目录。

需要注意,如果要重新在eclipse中导入目录作为工程,要先用sourcetree确认工程目录中没有上次eclipse留下的东西(配置文件,工程文件等)


刚导入工程后,自动编译时,看到有错误。

先配置VM参数
bash
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
--add-opens java.base/java.lang.invoke=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.security=ALL-UNNAMED

指定JDK版本为11
必须指定这个版本!

bash
D:\tools\java\OpenJDK11U-jdk_x64_windows_hotspot_11.0.30_7\jdk-11.0.30+7


此时,自动编译时,还是错的。工程编译不过。

指定java编译器版本为1.8


要注意上图中,有个"--release"选项不能勾选,否则工程编译不过。

现在工程就编译过了。
如果不放心,可以将工程clean一下,再自动编译一次。能确认工程是编译过的,且编译输出在工程targert目录下。


运行

运行菜单有些maven的选项,不要点。
直接选择"Run Configurations"

如果VM参数没配置,就配置一下
bash
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
--add-opens java.base/java.lang.invoke=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.security=ALL-UNNAMED

在运行之前,先去用户目录中,将.openpnp2删掉,看看运行起来后,权限够不够?



运行起来是正常的,且将.openpnp2目录中的内容都新建好了。
单元测试
以前用IDEA学习openpnp时,可以右击工程节点,进行"运行所有测试", 这个测试是用maven配置指定的。
在eclipse中也有对应操作。


备注
上述方法只适合openpnp2.0的工程
对于openpnp1.x的工程不好使。
如果想学openpnp1.x的工程,得用IDEA从.git克隆才行。主要是依赖和语法(有些库在JDK11时已经移除了)的不同。
eclipse配起1.0的工程来对于新手来说有点难。也许从.git, 用eclipse导入也行(会自动将依赖都用maven配置好),不过没试。太费劲了。
备注
现在的新版是openpnp2.4, 离openpnp2.0有1年的维护时间。
bash
git rev-list 2.0..2.4 --count
730
2.0到2.4版本之间,有730个提交。可以选一部分来看。
如果学习一个开源工程,选一个离最新版维护时间合适的地方(有一定提交数量)开始学习比较好.不光可以看软件的架构(对于一个完整快照工程(e.g. 发行版tag),可以检验自己是否可以理解和维护这个工程(想看啥功能的实现,就能从代码中直接准确找到,而不是用搜索大法去遍地找)),也可以通过一定数量的提交,看软件的进化。通过这些进化的步骤,可以检验自己是否能跟的上作者的思路。
能达到这2点,学习开源工程的初步目的就达到了。
如果是看懂工程之后,想测试一下自己的想法,就在开源工程克隆到本地的副本上开本地分支(e.g. tag2.0 => my2d0),然后试着改就行。
如果可以的话,就可以按照这个思路,用其他语言(e.g. QT + opencv(用c++来做工具软件,授权部分比较好控制))来做自己的工具软件了。