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);
    }

替换重启就正常了

相关推荐
xbgRS1 小时前
springboot的自动装配
java·spring boot
嘻哈∠※8 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
白狐_7989 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander25810 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅10 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
极创信息12 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate
汉字萌萌哒12 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
喜欢的名字被抢了13 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
数据知道13 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
2601_9499506314 小时前
Java 面试准备,用练题簿把“背过八股”变成“真正会答”
java·开发语言·面试·刷题·小程序推荐