apache/seatunnel · error · IllegalArgumentException
No data type converter found for identifier: ${identifier}
Error message
No data type converter found for identifier: ${identifier} What it means
ConverterLoader.loadDataTypeConverter discovers DataTypeConverter implementations via Java ServiceLoader and matches them against the given identifier string. If no discovered converter's identifier() equals the requested one, it throws this IllegalArgumentException.
Source
Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/table/converter/ConverterLoader.java:40
import java.util.List;
import java.util.ServiceLoader;
public class ConverterLoader {
public static DataTypeConverter<?> loadDataTypeConverter(String identifier) {
return loadDataTypeConverter(identifier, Thread.currentThread().getContextClassLoader());
}
public static DataTypeConverter<?> loadDataTypeConverter(
String identifier, ClassLoader classLoader) {
List<DataTypeConverter> converters =
discoverConverters(DataTypeConverter.class, classLoader);
for (DataTypeConverter dataTypeConverter : converters) {
if (dataTypeConverter.identifier().equals(identifier)) {
return dataTypeConverter;
}
}
throw new IllegalArgumentException(
"No data type converter found for identifier: " + identifier);
}
public static DataConverter<?> loadDataConverter(String identifier) {
return loadDataConverter(identifier, Thread.currentThread().getContextClassLoader());
}
public static DataConverter<?> loadDataConverter(String identifier, ClassLoader classLoader) {
List<DataConverter> converters = discoverConverters(DataConverter.class, classLoader);
for (DataConverter dataConverter : converters) {
if (dataConverter.identifier().equals(identifier)) {
return dataConverter;
}
}
throw new IllegalArgumentException("No data converter found for identifier: " + identifier);
}
public static TypeConverter<?> loadTypeConverter(String identifier) {View on GitHub (pinned to cf67b549a7)
Solutions
- Verify the identifier string against the identifier() of the converter implementation you intend to use
- Ensure the jar containing the converter is on the classpath/plugin directory so ServiceLoader can find it (run install-plugin.sh if needed)
- Check for version drift: the converter may exist only in newer/older SeaTunnel versions
Example fix
// before
DataConverter<?> c = ConverterLoader.loadDataTypeConverter("mysql-cdc-converter"); // no such id
// after
DataConverter<?> c = ConverterLoader.loadDataTypeConverter("mysql"); Defensive patterns
Strategy: try-catch
Validate before calling
String id = cfg.getConverterIdentifier(); assert id != null && !id.isEmpty(); // verify against registered identifiers before calling
Try / catch
try {
DataTypeConverter c = ConverterLoader.loadDataTypeConverter(identifier);
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Unknown converter id '" + identifier + "'; check plugin installation and spelling", e);
} Prevention
- Copy converter identifiers from the implementation's identifier() or docs
- Keep plugin jars installed via install-plugin.sh
- Pin connector/converter versions with your SeaTunnel version
When it happens
Trigger: Calling loadDataTypeConverter(identifier) with a converter identifier that no SPI-registered DataTypeConverter declares, including typos or wrong-case strings.
Common situations: Configuring a connector's converter option with a name not in the classpath (plugin jar missing, different SeaTunnel version, misspelled identifier).
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- No data converter found for identifier: ${identifier}
- No type converter found for identifier: ${identifier}
- Could not find any factories that implement '%s' in the clas
- Could not load service provider for factories.
- No DebeziumAdapter found for connector class: " + connectorC
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/1a992e85bff3b6bb.
Report an issue: GitHub.