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

  1. Identify the failing plugin from the message and remove/repair its jar in the plugins directory.
  2. Reinstall the correct plugin version matching your Pentaho/Kettle release.
  3. Clear stale plugin registrations and restart Spoon so the plugin registry rebuilds.
  4. 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

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


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)