对kettle客户端和源码环境进行远程debug调试 --- 对部署的java项目进行远程debug调试(idea版)

目录

kettle客户端进行远程debug调试

①使用编辑器打开spoon.bat这个文件

② 在idea中配置远程debug环境

③运行kettle与监听环境

④根据需求打断点,调试

在kettle源码环境中对插件或者是自定义的插件进行远程debug


        最近在对kettle进行二次开发的时候,需要对自己写的插件代码进行debug调试,然后在网上查询资料,以为要部署源码环境才能对插件的代码进行debug调试,所以就花了一天的时间去部署这个kettle的源码环境,主要是这个下载依赖太慢了,需要国外的专门镜像,,所以可能比较慢,如果网络不好可能需要好几个小时,并且还会断断续续,这里就不展示kettle的源码环境,会在下一篇博客中专门讲解这个kettle8.3的源码环境部署。

  但是事后发现,其实使用客户端也是可以对kettle进行debug远程调试的java的虚拟机支持debug远程调试。下面两种方式都会讲!其实不仅仅是kettle可以进行远程debug调试,jar部署的项目是都可以进行远程的调试的,可能就是需要不同的配置。

kettle客户端进行远程debug调试

我演示的kettle客户端环境是kettle7.1.0.0-12,先解释一下kettle客户端是什么,就是我们以前下载的软件zip压缩包,解压后可以直接执行的一个软件,也称绿色安装版。先直接在kettle官网安装自己需要的kettle版本:官网:Pentaho from Hitachi Vantara - Browse /Data Integration at SourceForge.net

 下载对应的zip解压后,就可以看到下面的目录情况了:具体的安装就是zip软件的安装方式一致,如果自己不太确定可以直接百度/谷歌搜索kettle安装,一堆相关的资料。

我们先看一下,运行后的kettle是什么样的:

对kettle配置远程调试环境:

①使用编辑器打开spoon.bat这个文件

找到下面这一行:

在这一行后面添加:不要加双引号!!!address是配置监听的端口号。

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

 配置完成后的如下:

② 在idea中配置远程debug环境

特别注意:这个监听的端口要与你刚刚在spoon.bat中的端口一致!!!

配置完成后,就会出现如下:

③运行kettle与监听环境

在安装解压包中双击spoon.bat,等待kettle运行成功后,启动idea中的debug

④根据需求打断点,调试

可能你会有疑惑,运行起来的项目里面都是jar包,这怎么打断点,其实开始我也很疑惑,但是经过各种尝试后确实是发现了一种可以打断点的方式;

idea打开的 kettle界面如下,并且此时kettle是在运行,idea中的远程debug也是在运行!

随便找一个插件进行远程debug测试:

然后再在idea打开的客户端中找到对应的插件的依赖包jar:把它作为依赖,这样是为了用来打断点

 然后我们就可以看见这个jar依赖可以展开看到相关的class文件了,可以在这个class文件中直接打断点:下面先找到窗口代码的class文件 注意:此时我们的idea中的远程debug是运行着的!!!

 然后我们去kettle中双击这个插件

 触发debug效果:

然后就可以根据自己的需求去自己想要调试的地方进行debug调试啦!!!

如果想把这个刚刚添加的add as library删除也是可以的:

在kettle源码环境中对插件或者是自定义的插件进行远程debug

 假设你已经搭建好了kettle的源码环境,我下面演示的是kettle8.3的源码环境;

在路径:org.pentaho.di.ui.spoon.Spoon 下找到这个程序入口文件:

执行这个启动文件,如果kettle源码部署正确,那么就会打开对应的操作页面:

 kettle8.3的源码环境的插件是需要自己把插件的jar依赖给部署到专门的文件夹中才会在操作页面生效的。后面会说。

使用源码环境启动这个程序后,kettle原生的一些功能是可以直接进行debug的,可以直接在对应的代码中进行debug,而且可以不需要远程debug,就是直接使用debug的方式启动spoon这个类就行,然后去对应的java代码打断点就行。

但是如果你需要对一些插件或者是自定义插件进行debug,可以直接使用idea的debug功能进行调试(要以debug的方式启动spoon程序)。把对应的插件的jar 使用  add as library就行,然后其他操作与在客户端一样。

但是我们去启动的操作页面寻找,会发现实际上插件的操作是不在上面的页面中的,需要直接进行部署才会显示在操作页面:

 注意:这个jar是打包后的插件的jar,二这个lib是插件需要的一些外部依赖啥的,看需求配置。

 这个version.xml打开就是这些东西:

<?xml version="1.0" encoding="UTF-8"?>
<version branch='TRUNK'>7.1.0.0-12</version>

 jar包可以用两种方式获取:

①:如果自定义开发的插件是maven项目,可以使用maven对插件源码进行打包

②:如果是kettle自带的外部插件,那么可以去客户端的zip中寻找

自己在源码环境部署对应的插件之后,再以debug的方式启动这个spoon就可以在操作页面看见部署的插件了,然后把这个插件的jar  add as library 就可以对class文件进行打断点了:

猜你喜欢

转载自blog.csdn.net/weixin_53142722/article/details/126903430