{"record":{"id":"625c033bd64815ed","repo":"apache/seatunnel","slug":"invalid-plugin-dependency-path-uri","errorCode":null,"errorMessage":"Invalid plugin dependency path: ${uri}","messagePattern":"Invalid plugin dependency path: (.+?)","errorType":"validation","errorClass":"ConfigCheckException","httpStatus":null,"severity":"error","filePath":"seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigValidationUtils.java","lineNumber":200,"sourceCode":"                        .collect(Collectors.toList()));\n        additionalJars = additionalJars.stream().distinct().collect(Collectors.toList());\n        if (additionalJars.isEmpty()) {\n            return parentClassLoader;\n        }\n\n        try {\n            ADD_URL_TO_CLASSLOADER.accept(parentClassLoader, additionalJars);\n            return parentClassLoader;\n        } catch (RuntimeException e) {\n            return new URLClassLoader(additionalJars.toArray(new URL[0]), parentClassLoader);\n        }\n    }\n\n    private static URL toUrl(java.net.URI uri) {\n        try {\n            return uri.toURL();\n        } catch (Exception e) {\n            throw new ConfigCheckException(\"Invalid plugin dependency path: \" + uri, e);\n        }\n    }\n\n    private static void validateEnvironmentConfig(Config config) {\n        if (!config.hasPath(Constants.ENV)) {\n            return;\n        }\n        ReadonlyConfig envConfig = ReadonlyConfig.fromConfig(config.getConfig(Constants.ENV));\n        OptionRule optionRule = new EnvOptionRule().optionRule();\n        validateOptionTypes(envConfig, optionRule);\n        org.apache.seatunnel.api.configuration.util.ConfigValidator.of(envConfig)\n                .validate(optionRule);\n    }\n\n    private static void validateOptionTypes(ReadonlyConfig config, OptionRule rule) {\n        for (Option<?> option : rule.getOptionalOptions()) {\n            config.getOptional(option);\n        }","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigValidationUtils.java#L182-L218","documentation":"toUrl converts a plugin dependency's java.net.URI into a URL and throws ConfigCheckException('Invalid plugin dependency path: <uri>') when URI.toURL() fails, i.e. the URI is not convertible to a valid URL (bad scheme/malformed path).","triggerScenarios":"A plugin-dependency entry in the env/job config (e.g. pluginJar paths or 'add' URLs) contains a malformed URI such as missing scheme, illegal characters, or an unresolvable path spec.","commonSituations":"Typos in plugin dependency paths, relative paths with spaces or Windows-style backslashes, or referencing jars that were never installed.","solutions":["Fix the dependency path in the config to a well-formed absolute URL/file URI","Escape or remove spaces/special characters from the path","Verify the referenced jar exists; use forward slashes and a file:/ scheme"],"exampleFix":"// before\nenv { plugin_dependencies = [\"/opt/my plugin/lib.jar\"] }\n// after\nenv { plugin_dependencies = [\"file:/opt/my%20plugin/lib.jar\"] }","handlingStrategy":"validation","validationCode":"try { new java.net.URI(depPath); } catch (URISyntaxException e) { throw new IllegalArgumentException(\"Bad plugin dependency path: \" + depPath); }","typeGuard":null,"tryCatchPattern":"try { ConfigValidationUtils.validate(config); } catch (ConfigCheckException e) { if (e.getMessage().startsWith(\"Invalid plugin dependency path\")) { log.error(\"Fix plugin_dependencies: {}\", e.getMessage()); } }","preventionTips":["Use absolute file URIs with forward slashes","URL-encode spaces in paths","Verify referenced jars exist before submission"],"tags":["url","config","plugins"],"backgroundTag":"invalid-url-format","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T21:17:11.552Z"}