pentaho/pentaho-kettle · error · KettlePluginException
Unable to locate value meta plugin of type (id)
Error message
Unable to locate value meta plugin of type (id)
What it means
Thrown by ValueMetaFactory.createValueMeta when the plugin registry lookup for a value meta plugin of the requested type id returns null — i.e. no value meta plugin is registered for that type code. The type id that failed the lookup is appended to the message.
Solutions
- Ensure the value meta plugin for that type is on the classpath and registered in the plugin registry
- Use a built-in type code from ValueMetaInterface instead of a custom/unknown id
- Check for plugin loading errors in the Pentaho logs at startup
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaFactory.java:40 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/3d38fefe7e5ebb5d.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaFactory.java:40
import org.pentaho.di.core.exception.KettlePluginException;
import org.pentaho.di.core.plugins.PluginInterface;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.row.ValueMetaInterface;
/**
* This class will hand out value meta objects from the plugin registry.
*
* @author matt
*
*/
public class ValueMetaFactory {
public static PluginRegistry pluginRegistry = PluginRegistry.getInstance();
public static ValueMetaInterface createValueMeta( String name, int type, int length, int precision ) throws KettlePluginException {
PluginInterface stringPlugin = pluginRegistry.getPlugin( ValueMetaPluginType.class, String.valueOf( type ) );
if ( stringPlugin == null ) {
throw new KettlePluginException( "Unable to locate value meta plugin of type (id) " + type );
}
ValueMetaInterface valueMeta = pluginRegistry.loadClass( stringPlugin, ValueMetaInterface.class );
valueMeta.setName( name );
valueMeta.setLength( length, precision );
return valueMeta;
}
public static ValueMetaInterface createValueMeta( String name, int type ) throws KettlePluginException {
return createValueMeta( name, type, -1, -1 );
}
public static ValueMetaInterface createValueMeta( int type ) throws KettlePluginException {
return createValueMeta( null, type, -1, -1 );
}
public static ValueMetaInterface cloneValueMeta( ValueMetaInterface source ) throws KettlePluginException {
return cloneValueMeta( source, source.getType() );
}View on GitHub (pinned to f3058517a1)