{"record":{"id":"6fbd6b2a63ae6c93","repo":"pentaho/pentaho-kettle","slug":"unable-to-get-list-of-instantiated-value-meta-plugin-classes","errorCode":null,"errorMessage":"Unable to get list of instantiated value meta plugin classes","messagePattern":"Unable to get list of instantiated value meta plugin classes","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"critical","filePath":"core/src/main/java/org/pentaho/di/core/database/Database.java","lineNumber":264,"sourceCode":"\n        @Override public void pluginRemoved( Object serviceObject ) {\n          initValueMetaPluginClasses();\n        }\n\n        @Override public void pluginChanged( Object serviceObject ) {\n          initValueMetaPluginClasses();\n        }\n      }\n    );\n  }\n\n  private static void initValueMetaPluginClasses() {\n    try {\n      valueMetaPluginClasses = ValueMetaFactory.getValueMetaPluginClasses();\n      // Reverse the sort list\n      valueMetaPluginClasses.sort( ( o1, o2 ) -> ( Integer.compare( o1.getType(), o2.getType() ) ) * -1 );\n    } catch ( Exception e ) {\n      throw new IllegalStateException( \"Unable to get list of instantiated value meta plugin classes\", e );\n    }\n  }\n\n  /**\n   * Construct a new Database Connection\n   *\n   * @param databaseMeta The Database Connection Info to construct the connection with.\n   * @deprecated Please specify the parent object so that we can see which object is initiating a database connection\n   */\n  @Deprecated\n  public Database( DatabaseMeta databaseMeta ) {\n    this.parentLoggingObject = null;\n    this.databaseMeta = databaseMeta;\n    shareVariablesWith( databaseMeta );\n\n    // In this case we don't have the parent object, so we don't know which\n    // object makes the connection.\n    // We also don't know what log level to attach to it, so we have to stick to","sourceCodeStart":246,"sourceCodeEnd":282,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/core/src/main/java/org/pentaho/di/core/database/Database.java#L246-L282","documentation":"Database.initValueMetaPluginClasses is a static initializer that loads all ValueMeta plugin classes via ValueMetaFactory.getValueMetaPluginClasses(). If that call throws any exception, the failure is wrapped in an IllegalStateException, aborting Database class initialization. Because it runs during class init, it typically surfaces as a Cause in an ExceptionInInitializerError.","triggerScenarios":"First use of the Database class when ValueMetaFactory cannot build the list of value meta plugin classes — e.g. the plugin registry fails to scan plugins, a plugin jar is corrupt/missing, or plugin type declarations are broken.","commonSituations":"Broken or incomplete Pentaho plugin directory, classpath missing kettle value-meta plugins, plugin.xml descriptor errors, or duplicated/conflicting plugin jars on the classpath in embedded deployments.","solutions":["Inspect the cause (getCause()) of the IllegalStateException/ExceptionInInitializerError to find the underlying plugin load failure","Verify the Pentaho plugin directories exist and contain valid value-meta plugin jars and plugin.xml files","Fix classpath: remove duplicate/conflicting Kettle jars and ensure all core plugins are packaged","Check ValueMetaFactory/PluginRegistry initialization logs for earlier warnings"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"try {\n  Class.forName( \"org.pentaho.di.core.database.Database\" );\n} catch ( Throwable t ) {\n  // fail fast: report missing/broken plugin environment before using Database\n}","typeGuard":null,"tryCatchPattern":"try {\n  new Database( loggingObject, dbMeta );\n} catch ( ExceptionInInitializerError e ) {\n  log.error( \"Plugin init failed: \" + e.getCause(), e );\n}","preventionTips":["Package all value-meta plugin jars and plugin.xml descriptors in deployments","Remove duplicate Kettle jars from the classpath","Smoke-test Database class initialization early at application startup"],"tags":["class-initialization","plugin-registry","classpath"],"backgroundTag":"module-init-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}