IntelliJ IDEA运行Kettle 8.0源码遇log4j配置文件解析错误求助
先来看你遇到的完整错误详情:
Connected to the target VM, address: '127.0.0.1:51628', transport: 'socket'
log4j:ERROR Could not parse file [plugins/kettle5-log4j-plugin/log4j.xml].
java.io.FileNotFoundException: F:\open-source\Java\open-framwork\pentaho-kettle-8.0.0.0-R\plugins\kettle5-log4j-plugin\log4j.xml (系统找不到指定的路径。)
at java.io.FileInputSt...
这个问题本质是Kettle启动时默认会去plugins/kettle5-log4j-plugin/目录加载log4j配置文件,但这个路径要么不存在,要么缺少对应的xml文件,下面给你几个可行的解决办法:
检查插件目录完整性
先去你的源码根目录下确认plugins/kettle5-log4j-plugin/这个文件夹是否存在。如果不存在,大概率是你下载的源码包不完整,或者解压过程中丢失了文件。你可以重新下载完整的Kettle 8.0源码包,或者从官方代码仓库同步缺失的插件模块。手动复制配置文件到指定路径
如果插件目录存在,但里面没有log4j.xml,你可以在源码里找默认的配置文件——一般在源码根目录或者core/src/main/resources/下会有一份log4j.xml,把它复制一份放到plugins/kettle5-log4j-plugin/目录下即可。修改IDEA运行配置,指定log4j路径
打开IntelliJ IDEA的「Run/Debug Configurations」,找到你运行Kettle的配置项:- 在
VM options里添加参数:-Dlog4j.configuration=file:/你的源码根目录路径/log4j.xml - 把路径替换成你实际的源码路径,比如
-Dlog4j.configuration=file:F:/open-source/Java/open-framwork/pentaho-kettle-8.0.0.0-R/log4j.xml
这样启动时程序会直接使用根目录的配置文件,不再去插件目录查找。
- 在
编译插件模块
如果是因为插件模块没编译导致文件未生成,你可以在IDEA里右键点击kettle5-log4j-plugin模块,选择「Build Module 'kettle5-log4j-plugin'」,编译完成后检查模块的输出目录是否生成了log4j.xml,之后再重新运行主程序。
内容的提问来源于stack exchange,提问作者Galen

