public static URL buildDirtyPluginUrl(
        String dirtyType,
        String localPath,
        String remotePath,
        String pluginLoadMode) throws Exception {
        if (Objects.isNull(dirtyType)) {
            dirtyType = DirtyConsumerFactory.DEFAULT_DIRTY_TYPE;
        }
        String prefix = String.format("dirtyConsumer-%s", dirtyType.toLowerCase()).toLowerCase();
        String consumerType = DirtyConsumerFactory.DIRTY_CONSUMER_PATH + File.separator + dirtyType;
        String consumerJar = PluginUtil.getJarFileDirPath(consumerType, localPath, pluginLoadMode);
        String jarFileName = PluginUtil.getCoreJarFileName(
            consumerJar,
            prefix,
            pluginLoadMode
        );

        String path;
        if (StringUtils.equalsIgnoreCase(pluginLoadMode, EPluginLoadMode.CLASSPATH.name())) {
            path = remotePath == null ? localPath : remotePath;
        } else {
            path = localPath;
        }

        String dirtyPath = path + SP + DIRTY_DATA_PRE + SP + dirtyType;
        URI uri = URI.create("file:" + dirtyPath + SP + jarFileName);
        return uri.toURL();
    }
build dirty data url from plugin path

@param dirtyType      type of dirty type
@param localPath      local path
@param remotePath     remote path
@param pluginLoadMode load plugin mode
@return dirty plugin url
@throws Exception exception
core/src/main/java/com/dtstack/flink/sql/util/PluginUtil.java