• 对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打开就是这些东西:

    1. "1.0" encoding="UTF-8"?>
    2. <version branch='TRUNK'>7.1.0.0-12version>

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

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

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

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

     

  • 相关阅读:
    数字电路基础(含半加器、全加器、逻辑化简、卡诺图化简)
    React高级特性之受控和非受控组件
    stm32摄像头调试 | 串口传输照片数据 | 用python来设计上位机通信软件
    JavaSE_day39(接上File:获取,修改,数组形式获取,获取目录下的java文件,删除目录。回顾以及深入完整介绍IO,使用字符、字节复制文本文件)
    连接阿里云MaxCompute数据源报错504 Gateway Time-out
    Mac虚拟机Parallels Desktop和VirtualBox哪个更适合?
    Linux 模块管理方法之 DKMS
    GJB常见混淆概念
    Webpack 性能优化 二次编译速度提升3倍!
    ARMv8 cache的包含策略inclusive 和 exclusive之间的区别以及Cortex-A55示例详解
  • 原文地址:https://blog.csdn.net/weixin_53142722/article/details/126903430