使用MLCP导出数据库时出现StringIndexOutOfBoundsException报错如何解决
问题根因
该报错是MLCP内置的旧版Hadoop依赖与Windows环境下JDK9及以上版本的兼容问题导致:旧版Hadoop的Shell类解析Windows系统环境变量时存在硬编码的字符串截取逻辑,当遇到长度不足3的路径值时就会触发StringIndexOutOfBoundsException异常。
可用解决方案
- 方案1:切换JDK运行环境到JDK8,MLCP对JDK8的兼容性最优,切换完成后重新执行导出命令即可正常运行。
- 方案2:若需保留高版本JDK,可替换MLCP依赖包:找到MLCP安装目录下的
lib文件夹,将其中的hadoop-common.jar替换为适配高版本JDK的修复版本,重启命令行后重试。 - 方案3:执行命令前先配置临时环境变量规避冲突,在当前cmd窗口先执行
set HADOOP_HOME=<替换为你的MLCP实际安装根目录>,再运行原MLCP导出命令。 - 方案4:调整输出路径的写法,将Windows路径的反斜杠替换为正斜杠,或给路径加上双引号,比如把原命令中的
C:\test_sample修改为"C:/test_sample"后重试。
内容的提问来源于stack exchange,提问作者marklogic_coder
相关产品推荐
相关产品推荐

