Dolphinscheduler3.2.1运行Java Jar路径重复的BUG修复问题

由于路径重复导致无法正确读取到Jar

bash 复制代码
[INFO] 2025-04-13 06:14:57.975 +0000 - Final Shell file is: 
[INFO] 2025-04-13 06:14:57.975 +0000 - ****************************** Script Content *****************************************************************
[INFO] 2025-04-13 06:14:57.976 +0000 - #!/bin/bash
BASEDIR=$(cd `dirname $0`; pwd)
cd $BASEDIR
${JAVA_HOME}/bin/java -classpath .:/tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036:/tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036//tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036/game-utils-1.0-SNAPSHOT.jar -jar /tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036//tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036/game-utils-1.0-SNAPSHOT.jar  
[INFO] 2025-04-13 06:14:57.976 +0000 - ****************************** Script Content *****************************************************************
[INFO] 2025-04-13 06:14:57.976 +0000 - Executing shell command : sudo -u hadoop -i /tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036/26335_246036.sh
[INFO] 2025-04-13 06:14:57.978 +0000 - process start, process id is: 1414860
[INFO] 2025-04-13 06:14:58.978 +0000 -  -> 
	Error: Unable to access jarfile /tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036//tmp/dolphinscheduler/exec/process/hadoop/15123518621664/16374306006816_3/26335/246036/game-utils-1.0-SNAPSHOT.jar

解决办法:修改源码重新编译Dolphinscheduler3.2.1,替换dolphinscheduler-task-api-3.2.1.jar

java 复制代码
package org.apache.dolphinscheduler.plugin.task.api.shell

//BaseLinuxShellInterceptorBuilder类的 

private String shellBody() {
        if (CollectionUtils.isEmpty(scripts)) {
            return StringUtils.EMPTY;
        }
        String scriptBody = scripts
                .stream()
                .collect(Collectors.joining(System.lineSeparator()));
        //新增去除重复路径
        if(scriptBody.contains(".jar")){
            log.info("确保去除重复路径");
            scriptBody = scriptBody.replace(shellDirectory+"//","/");
        }
        scriptBody = scriptBody.replaceAll("\\r\\n", System.lineSeparator());
        return ParameterUtils.convertParameterPlaceholders(scriptBody, propertyMap);
    }

替换重启就正常了

相关推荐
zuowei288917 小时前
编程语言对比:C/C++/Java/C#/PHP
java·c语言·c++
百数平台17 小时前
功能更新——百数详情页“数据简报”与“关联标签页”配置指南
java·服务器·前端
接着奏乐接着舞17 小时前
java lambda表达式
java·开发语言·python
金銀銅鐵17 小时前
[Java] 自己写程序,来解析字段的 descriptor
java·后端
ch.ju17 小时前
Java程序设计(第3版)第四章——成员方法
java·开发语言
Dicky-_-zhang17 小时前
微服务安全防护实战:OAuth2与JWT鉴权
java·jvm
牙牙学语的阿猿17 小时前
sentinel创建规则时的坑
java·开发语言·sentinel
未若君雅裁17 小时前
微服务限流实战:Nginx 漏桶与网关令牌桶
java·nginx·微服务
罗超驿17 小时前
1.JavaEE初阶学习安排+介绍计算机是如何工作的
java·学习·java-ee
超梦dasgg17 小时前
Java 生产环境 JVM 调优实战
java·开发语言·jvm