pentaho/pentaho-kettle · error · RuntimeException
Error creating class for:
Error message
Error creating class for:
What it means
CreateDatabaseWizardPage1 populates the database-type list box from registered database plugins. If reading a plugin's name/ids throws, it wraps the failure in a RuntimeException 'Error creating class for: ' + plugin, aborting wizard page creation.
Solutions
- Identify the failing plugin from the message and remove/repair its jar in the plugins directory.
- Reinstall the correct plugin version matching your Pentaho/Kettle release.
- Clear stale plugin registrations and restart Spoon so the plugin registry rebuilds.
- Update to a plugin build compatible with the current DatabasePluginType.
Example fix
// before
for ( PluginInterface plugin : plugins ) {
wDBType.add( plugin.getName() );
}
// after
for ( PluginInterface plugin : plugins ) {
try {
wDBType.add( plugin.getName() );
} catch ( Throwable t ) {
log.logError( "Skipping unloadable database plugin: " + plugin.getIds()[0], t );
}
} Defensive patterns
Strategy: fallback
Validate before calling
// verify each plugin loads before adding to the wizard list
for ( PluginInterface plugin : plugins ) {
try {
plugin.getName();
} catch ( Throwable t ) {
log.logError( "Unusable plugin: " + plugin.getIds()[0], t );
}
} Try / catch
try {
new CreateDatabaseWizard( shell, ... ).open();
} catch ( RuntimeException e ) {
if ( e.getMessage().startsWith( "Error creating class for: " ) ) {
showPluginRepairHint( e.getMessage() );
}
} Prevention
- Keep database plugin jars matched to the Kettle/Pentaho version.
- Remove duplicate or corrupt plugin jars from the plugins directory.
- Validate plugin.xml descriptors after manual plugin installs.
When it happens
Trigger: Opening the 'Create database' wizard when the plugin registry contains a database plugin whose class cannot be loaded/instantiated (corrupt or incompatible plugin jar, duplicate plugin id).
Common situations: Manually installed or outdated database plugin jars in libext/plugins; plugin built against a different Kettle version; broken plugin.xml descriptor.
Related errors
- AbortMeta.Exception.UnableToSaveStepInfoToRepository
- AccessInputMeta.Exception.ErrorReadingRepository
- AddSequence.Exception.CouldNotFindNextValueForSequence
- AddSequence.Exception.ErrorReadingSequence
- AddSequenceMeta.Exception.UnableToReadStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/9f7d5b0af3d629ce.
Report an issue: GitHub.
Appendix: source
Thrown at ui/src/main/java/org/pentaho/di/ui/core/database/wizard/CreateDatabaseWizardPage1.java:149
props.setLook( wDBType );
PluginRegistry registry = PluginRegistry.getInstance();
java.util.List<PluginInterface> plugins = registry.getPlugins( DatabasePluginType.class );
Collections.sort( plugins, new Comparator<PluginInterface>() {
@Override
public int compare( PluginInterface o1, PluginInterface o2 ) {
return o1.getName().toUpperCase().compareTo( o2.getName().toUpperCase() );
}
} );
for ( PluginInterface plugin : plugins ) {
try {
wDBType.add( plugin.getName() );
wDBIDtoNameMap.put( plugin.getIds()[0], plugin.getName() );
} catch ( Exception e ) {
throw new RuntimeException( "Error creating class for: " + plugin, e );
}
}
// Select a default: the first
/*
* if (databaseMeta.getDatabaseType() <= 0) { wDBType.select(0); } else {
*/
int idx = wDBType.indexOf( wDBIDtoNameMap.get( databaseMeta.getPluginId() ) );
if ( idx >= 0 ) {
wDBType.select( idx );
} else {
wDBType.select( 0 );
}
// }
fdDBType = new FormData();
fdDBType.top = new FormAttachment( wName, margin );View on GitHub (pinned to f3058517a1)