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

替换重启就正常了

相关推荐
熊大如如4 小时前
Java 反射
java·开发语言
猿来入此小猿5 小时前
基于SSM实现的健身房系统功能实现十六
java·毕业设计·ssm·毕业源码·免费学习·猿来入此·健身平台
goTsHgo5 小时前
Spring Boot 自动装配原理详解
java·spring boot
卑微的Coder5 小时前
JMeter同步定时器 模拟多用户并发访问场景
java·jmeter·压力测试
pjx9876 小时前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka
多多*6 小时前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle
gxn_mmf6 小时前
典籍知识问答重新生成和消息修改Bug修改
前端·bug
爱喝酸奶的桃酥6 小时前
MYSQL数据库集群高可用和数据监控平台
java·数据库·mysql
唐僧洗头爱飘柔95277 小时前
【SSM-SSM整合】将Spring、SpringMVC、Mybatis三者进行整合;本文阐述了几个核心原理知识点,附带对应的源码以及描述解析
java·spring·mybatis·springmvc·动态代理·ioc容器·视图控制器
骑牛小道士7 小时前
Java基础 集合框架 Collection接口和抽象类AbstractCollection
java