openpnp - 软件调试环境搭建

news2025/1/29 14:03:14

文章目录

    • openpnp - 软件调试环境搭建
    • 概述
    • 笔记
    • openpnp官方站点
    • 将openpnp工程克隆到本地
    • 将openpnp的wiki工程克隆到本地
    • 查看openpnp开发指南
    • 根据openpnp开发指南搭建openpnp开发环境
    • IDE的选择
    • IntelliJ IDEA学习版的安装
    • 引入openpnp工程
    • 在IDEA中, 运行openpnp主程序
    • 配置IntelliJ IDEA(可选)
    • 备注
    • END

openpnp - 软件调试环境搭建

概述

想了解openpnp的实现, 先搭建一个调试环境.
实验目的: 能单步调试openpnp源码, 能将openpnp在调试器IDE中跑起来.

笔记

依赖的原始文档为openpnp wiki文档和openpnp工程的自带文档.

openpnp官方站点

一切实验都从官方站点开始 https://openpnp.org/

将openpnp工程克隆到本地

在官方站点上点击Code, 转到github上的openpnp工程页 https://github.com/openpnp/openpnp
找到工程git rep url(https://github.com/openpnp/openpnp.git), 克隆到一个有github访问权限的git托管站点.
再从git托管站点克隆到本地.

将openpnp的wiki工程克隆到本地

由于网络不好, 且openpnp工程自带的文档是不够的, 需要将openpnp wiki工程也克隆到本地
https://github.com/openpnp/openpnp.wiki.git

查看openpnp开发指南

openpnp_wiki\Developers-Guide.md

根据openpnp开发指南搭建openpnp开发环境

IDE的选择

openpnp工程是java写的, 官方推荐2种IDE : Eclipse, IntelliJ IDEA
通过文档描述可知, IntelliJ IDEA用起来相当简单.
而且看文档和后来实验(编译openpnp工程), openpnp需要JDK12以下版本, 否则测试用例中opencv报错. 但是非专业的java程序员, 很难知道JDK各个靠谱版本从哪里下载. 但是IntelliJ IDEA中自带JDK版本选择和下载, 这功能太好用了.
那就选 IntelliJ IDEA(后来通过自己使用, 也发现IntelliJ IDEA用起来是相当简明, 相当友好, 不愧是大部分java开发者都在用的IDE, 群众的眼睛雪亮的).

IntelliJ IDEA学习版的安装

从IDEA官方下载安装程序 https://www.jetbrains.com/idea/download/#section=windows
选择旗舰版下载, 下载到本地为 ideaIU-2022.3.exe
将旗舰版的授权改为长期学习, 网上资料很多, 照着做就好.

引入openpnp工程

在这里插入图片描述
新建一个空项目, 填写项目名称和工程位置. 点击创建.

在这里插入图片描述
在这里插入图片描述
新建从版本控制来的项目
项目的git url 是从github上的openpnp项目克隆到有访问github仓库权限的git托管服务器中的克隆后的url. 点击克隆.
在这里插入图片描述
在这里插入图片描述
输入自己在托管服务器上的账户信息, 点击登录.
在这里插入图片描述
IDEA右下角可以看到openpnp仓库克隆进度, 等待完成.

在这里插入图片描述
项目克隆到本地后, 在弹框中勾选项目, 点击信任项目.

在这里插入图片描述
选择在当前窗口打开项目.

在这里插入图片描述
工程刚打开时, EA右下角显示正在解析工程依赖项, 等待解析完成.
在这里插入图片描述
可以选择升级工程的依赖项, 我没选择升级.

在这里插入图片描述
工程刚引入时, JDK用的是环境变量JAVA_HOME中指定的那个最新的版本, 这个JDK版本不合适, 现在模拟第一次上手openpnp项目时的流程. 哪不合适就调整哪里, 直到工程正常使用.

openpnp文档中有提到, 必须通过所有测试用例, 才能提交代码到仓库.
既然这是个发布的git库版本, 作者们已经调试好了, 那我们先试试是否这个克隆来的工程能通过所有测试.
在这里插入图片描述
在工程节点上右击, 选择运行所有测试.
在这里插入图片描述
可以看到, 有很多测试错误.
看报错信息, 大概猜到是JDK版本不合适.
openpnp文档中有说明, JDK版本要15以下才行.
在这里插入图片描述
如果不是JDK15以下, 就需要调整代码.
现在在IDEA中添加JDK15
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择JDK版本为15, 在下拉列表中选择可用的JDK15版本.
在这里插入图片描述
IDEA右下角有进度提示, 等待提示完成.
这个速度有点慢, 我下载JDK15时, 等着可以完成(对于新手, 软件或操作慢点都不怕, 就怕操作中断了, 完不成). 如果完不成(网络原因), 可以自己下载JDK, 解压, 在IDEA中手工添加JDK版本. 这个下面再记录(因为这个JDK15也是不好使的)
等JDK15下载完.
指定工程使用的JDK为JDK15.
在这里插入图片描述
再次运行所有测试用例
在这里插入图片描述
虽然通过了所有测试, 但是拉动右边的输出信息, 可以看到工程中自带的opencv, 只能运行在JDK12以下.
现在将添加JDK12以下的版本.
在这里插入图片描述
可以看到IDEA中并没有JDK12的下载, 只能下载JDK11.
在这里插入图片描述
我选择的是Amazon Correto 11.0.17, 然后点击下载.
在这里插入图片描述
这个下载速度巨慢, 而且再苦苦等待后, 进度为98%时, 就下载失败了.
决定在IDEA中手工指定JDK11.
在官网找到了 Amazon Correto 11.0.17 的下载地址. https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html
在这里插入图片描述
下载winx64, winx86的非安装版本到本地.
在这里插入图片描述
先用64位版本的JDK11试试, 解开 amazon-corretto-11-x64-windows-jdk
在这里插入图片描述
JDK11的路径位 E:\tools\java\amazon-corretto-11-x64-windows-jdk\jdk11.0.17_8
在IDEA中手工指定JDK11
在这里插入图片描述
在这里插入图片描述
点击确定,等待JDK11引入完成.
指定工程JDK版本位JDK11
在这里插入图片描述
再次运行所有测试
在这里插入图片描述
可以看到在JDK11下, 所有测试都通过了.
而且出现的唯一的一段警告, 出现在正式测试信息的顶部, 和工程无关.
看看这5句报警信息

WARNING: An illegal reflective access operation has occurred
// 发生了非法的反射访问操作
// 低版本JDK中允许反射访问, 高版本中不建议使用反射访问. 反射访问不安全, 不是错误.
// 这个是JDK本身的问题, 不是问题.

WARNING: Illegal reflective access by nu.pattern.OpenCV$SharedLoader (file:/C:/Users/chenx/.m2/repository/org/openpnp/opencv/4.5.1-2/opencv-4.5.1-2.jar) to field java.lang.ClassLoader.usr_paths
// 这个也是高版本JDK警告反射访问绕过了JDK正常的成员变量访问机制
// 这个是JDK本身的问题, 不是问题.

WARNING: Please consider reporting this to the maintainers of nu.pattern.OpenCV$SharedLoader
// 这句说, 将上述2个警告, 报告给opencv项目的维护者
// 这个不是问题.

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
// 这句说 可以使用 --illegal-access=warn 选项, 进制对非法反射访问进行警告, 因为这只是不安全, 但是不是错误.
// 就像我们在高版本VS中使用旧式CRT库函数时, 也会有警告, 必须加上编译选项, 才不会对旧函数产生不安全的警告.
// 所以说, 这句也不是问题

WARNING: All illegal access operations will be denied in a future release
// 在未来的版本中,将拒绝所有非法访问操作
// JDK新版本中, 将不允许非法的反射访问.
// 这也不是问题.

到此, 我们使用JDK11, 成功运行了openpnp项目的所有测试用例.

在IDEA中, 运行openpnp主程序

在这里插入图片描述
找到openpnp项目的main文件, 选择运行(如果要单步调试, 就选择调试)
在这里插入图片描述
可以看到openpnp跑起来了, 如果选择了中文语言, 程序的界面文字都变成中文了.

配置IntelliJ IDEA(可选)

在打开工程后, 才能设置工程选项
这个可选, 配置一下好些(e.g. 不需要自动编译), 不配置亦可.
记录一下改过的配置. 记录的不全, 如果需要其他的IDEA设置, 网上资料很多, 跟着设置就好.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

备注

在此实验基础上, 就可以学习和膜拜openpnp项目了.
工程结构等项目相关的知识点, 需要进一步看开发文档, wiki, git log.

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业手持终端并非“单兵作战”,5G智能模组时刻在线赋能

随着智能终端技术的不断演进,稳定性、实时性和续航能力强的工业手持终端为移动通信、消费电子、工业信息采集等领域提供便捷、高效的数据采集、存储、传输等功能服务。在智慧物流、智慧零售、智能制造、智慧医疗等领域,工业手持终端仍表现出需求激增、功…

Neuron 2.3.0 发布:更轻松地接入和管理海量工业设备

Neuron 2.3.0 版本现已正式发布! 除了新增数据统计、模糊搜索、页面下载日志等功能提升产品易用性外,Neuron 2.3.0 版本还新增了 CIP Ethernet/IP、Mitsubishi Melsec 1E frame E71 和 Fanuc Focas 三个协议驱动,以更强大的能力帮助工业用户…

chatgpt使用教程

** 使用门槛:需要自行准备能开全局代理的科学上网工具 好评赠送免费科学上网工具,也可以自己准备科学工具。 ** 下单以后,我们会发送一串账号密码给您。如图: 其中卡号就是chatgpt的账号,密码就是chatgpt密码。 第…

数据结构---优先队列

优先队列实现方式入队出队JAVA实现总结二叉堆是实现优先队列的基础,上一篇二叉堆博文: 二叉堆队列的特点是先进先出(FIFO)。 优先队列不再遵循先入先出的原则,而是分为两种情况。 最大优先队列,无论入队顺…

Ansible 服务器主机配置

使用 ansible 来对远程主机进行部署的话。我们需要首先对远程主机进行配置。 配置文件路径 配置文件位于:/etc/ansible/hosts 路径下面。 可以使用 vi 工具进行打开。 配置示例 下面是一个简单的配置示例。 [db]127.0.0.1[app]127.0.0.1 ansible_connections…

关于Playwright Xpath找不到元素问题解决方案

今日像往常进行xpath定位元素 发现代码里定位不出来 所以我就手动修改定位xpath 最后怎么修改都获取不到 返回None 那我就向上找 找到他的外祖母 最后进行inner_html() 发现元素是存在的 没有任何问题 这里我就又更加怀疑自己定位出错 折腾了半天发现定位不出来 于是我放弃了…

目标检测算法——车辆牌照识别数据集汇总 2(附下载链接)

🎄🎄近期,小海带在空闲之余收集整理了一批车辆牌照识别数据集供大家参考。 整理不易,小伙伴们记得一键三连喔!!!🎈🎈 目录 一、伊朗车牌数据集 🎄&#x1f3…

【目标跟踪】光流法运动视频跟踪【含Matlab源码 1357期】

⛄一、光流场简介 1 案例背景 运动视觉研究的内容是如何从变化场景中的一系列不同时刻的图像中提取有关场景中物体的形状、位置和运动的信息。根据研究的方法,它可以分为两类:基于特征的方法和基于光流场的方法。基于特征的方法抽取特征点,是…

傻白探索Chiplet,Chiplet面临的挑战之互连和封装(四)

目录 一、互连技术 二、封装技术 (1)英特尔 (2)台积电 三、生产流程 四、软件技术 实施Chiplet技术面临的主要挑战包括: 互连技术。Chiplet技术需要开发新型互连技术,以便将小芯片组合在一起。目前&a…

51单片机模块化编程

模块化 传统方式编程:所有的函数均放在 main.c 里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。 模块化编程:把各个模块的代码放在不同的 .c 文件里…

FL Studio21新版终于有内置的强大混响插件了

FL Studio 21新版终于有内置的强大混响插件了FL Studio 21新版不光如此,还增加很多官方主题,并内置了多款可选,满足大家对个性化的需求! 而且每一个人都能快速地创建属于自己的主题,彰显你的与众不同! 一分…

JavaScript(五):函数、作用域

JavaScript函数函数的基本使用return返回语句arguments的使用函数的两个案例作用域函数的基本使用 1.函数声明 格式: function 函数名(){ 函数体代码 } function是声明函数的关键字,必须小写 2.函数调用 函数名(); 调用的时候不要忘记加小括号函数如果…

【数据分析】大型ADCP数据集的处理和分析(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

猿如意中的【Sublime Text Build 3211】开发工具详情介绍

目录 一、工具名称 二、下载安装渠道 2.1 什么是猿如意? 2.2 如何下载猿如意? 2.3 如何在猿如意中下载Sublime Text Build 3211? 三、Sublime Text Build 3211介绍 四、软件安装过程 五、软件界面 六、Sublime Text Build 3…

redis7知识点总结

文章目录1. redis单线程为啥会这么快2. redis数据类型和底层存储结构2.1 string类型2.1.1 SDS2.2 hash类型2.3 list类型2.4 set类型(集合)2.5 zset类型(有序集合)2.6 ziplist压缩列表2.7 listpack2.8 quicklist-快速列表2.9 skipl…

马士兵-郑金维—并发编程—6.并发集合

一、ConcurrentHashMap 1.1 存储结构 ConcurrentHashMap是线程安全的HashMap ConcurrentHashMap在JDK1.8中是以CAS+synchronized实现的线程安全 CAS:在没有hash冲突时(Node要放在数组上时) synchronized:在出现hash冲突时(Node存放的位置已经有数据了) 存储的结构:…

DBCO-PEG3-NHS ester,2163772-16-3,二苯并环辛炔-三聚乙二醇-琥珀酰亚胺酯

英文名称:DBCO-PEG3-NHS ester 中文名称:二苯并环辛炔-三聚乙二醇-琥珀酰亚胺酯 CAS:2163772-16-3 分子式:C32H35N3O9 分子量:605.64 纯度:>95% 外观:浅黄色半固态 储存条件&#xff…

互联网企业的逆向奔赴,京东调集首批1000余名快递小哥陆续抵达北京

在每一次苦难来临的时刻,逆行者的背影,总是让人倍感温暖。   在疫情依然肆虐的当下,更是如此。   那些义无反顾地奔赴疫情最前线的逆行者们,总是在用血肉之躯守护着我们的生活冷暖。如果一定要寻找这些逆行者当中最美的那一抹…

SDK JDBC多种方式接入AZURE SQL DATABASE JAVA版

本文阐述使用JDBC接入AZURE SQL 数据库 笔者认为AZURE云上的AZURE SQL和SQL SERVER是很相似的,在普通的账号密码情况下JDBC字符串都是一致的。 下来全部说明官方的多种连接方式,参考官方: https://learn.microsoft.com/zh-cn/sql/connect/jdb…

Post-GWAS: single-cell disease relevance score (scDRS) 分析

1、scDRS的计算原理如下所示: 图片来源:Zhang M J, Hou K, Dey K K, et al. Polygenic enrichment distinguishes disease associations of individual cells in single-cell RNA-seq data[R]. Nature Publishing Group, 2022. 2、通过scDRS分析可以得到…