You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MLCP导入文件至MarkLogic时遇Java字符串索引越界异常求助

MLCP导入MarkLogic时Java字符串越界异常分析

环境信息

  • 操作系统:Windows 11
  • MLCP版本:10.0.9
  • Java版本:
java 19 2022-09-20
Java(TM) SE Runtime Environment (build 19+36-2238)
Java HotSpot(TM) 64-Bit Server VM (build 19+36-2238, mixed mode, sharing)

执行命令

mlcp.bat -options_file mlcp_config.txt

错误日志

Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.apache.hadoop.util.GenericOptionsParser.preProcessForWindows(GenericOptionsParser.java:440)
        at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:486)
        at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:170)
        at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:153)
        at com.marklogic.contentpump.ContentPump.runCommand(ContentPump.java:120)
        at com.marklogic.contentpump.ContentPump.main(ContentPump.java:74)
Caused by: java.lang.StringIndexOutOfBoundsException: Range [0, 3) out of bounds for length 2
        at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55)
        at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52)
        at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
        at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Preconditions.java:112)
        at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Preconditions.java:349)
        at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4602)
        at java.base/java.lang.String.substring(String.java:2715)
        at org.apache.hadoop.util.Shell.<clinit>(Shell.java:51)

问题原因

  1. Java版本兼容性问题:MLCP 10.0.9依赖的Hadoop组件未适配Java 19。Hadoop的Shell类初始化时会执行字符串截取操作,高版本Java的字符串处理逻辑与Hadoop预期不符,触发越界异常。
  2. 系统环境变量异常:Hadoop会读取Windows的COMSPEC环境变量,若该变量值长度过短(如为空或仅包含部分路径),会导致字符串截取时的边界检查失败。
  3. MLCP版本适配不足:MLCP 10.0.9发布时Java 19尚未成为主流版本,官方未针对该版本做兼容性验证,存在未覆盖的场景。

解决建议

  • 降级Java版本至MLCP官方推荐的版本(优先选择Java 8或Java 11,具体参考MLCP 10.0.9官方文档)。
  • 检查并修复COMSPEC环境变量,确保其值为完整的cmd.exe路径,例如C:\Windows\system32\cmd.exe。
  • 升级MLCP至更高版本,新版本通常会修复对高版本Java的兼容性问题。

内容的提问来源于stack exchange,提问作者Rashmita Purkayastha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:05:24