pentaho/pentaho-kettle · error · RuntimeException
Properties, Kettle systems settings, not initialised!
Error message
Properties, Kettle systems settings, not initialised!
What it means
Props.getInstance() returns the global Kettle properties singleton and throws RuntimeException if Props.init() was never called in this JVM. Kettle requires explicit, single initialization before any code reads properties.
Solutions
- Call KettleEnvironment.init() or Props.init(type) before any use of Props.getInstance()
- Fix initialization ordering so the bootstrap runs before dependent code
- In tests, add an @BeforeClass that initializes Kettle environment once
- Centralize access behind your own lazy initializer that calls init if needed (guarded)
Example fix
// before
Props props = Props.getInstance();
// after
if (!Props.isInitialized()) {
Props.init(Props.TYPE_PROPERTIES_KETTLE);
}
Props props = Props.getInstance(); Defensive patterns
Strategy: validation
Validate before calling
public static Props propsSafe() {
if (!Props.isInitialized()) {
Props.init(Props.TYPE_PROPERTIES_KETTLE);
}
return Props.getInstance();
} Try / catch
try {
Props props = Props.getInstance();
} catch (RuntimeException e) {
Props.init(Props.TYPE_PROPERTIES_KETTLE);
Props props = Props.getInstance();
} Prevention
- Bootstrap with KettleEnvironment.init() before any Kettle API usage
- Add environment init to test setup (@BeforeClass)
- Do not access Props from static initializers that may run before bootstrap
When it happens
Trigger: Calling Props.getInstance() before any Props.init(...) call — e.g. using Kettle environment constants/props in a standalone tool or test without bootstrapping KettleEnvironment first.
Common situations: Unit tests accessing Props without calling KettleEnvironment.init(), embedding PDI code in a library where the host app never initializes Props, code paths executing before the bootstrap finishes (ordering bug).
Related errors
- The Properties systems settings are already initialised!
- The properties systems settings are already initialised!
- Central Log Store is not initialized!!!
- Error initializing JNDI
- Error invoking lifecycle listener
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/8c11be7855c142f5.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/pentaho/di/core/Props.java:215
throw new RuntimeException( "The properties systems settings are already initialised!" );
}
}
/**
* Check to see whether the Kettle properties where loaded.
*
* @return true if the Kettle properties where loaded.
*/
public static boolean isInitialized() {
return props != null;
}
public static Props getInstance() {
if ( props != null ) {
return props;
}
throw new RuntimeException( "Properties, Kettle systems settings, not initialised!" );
}
protected Props() {
init();
}
protected Props( int t ) {
type = t;
filename = getFilename();
init();
}
protected void init() {
createLogChannel();
properties = new Properties();
pluginHistory = new ArrayList<ObjectUsageCount>();
loadProps();View on GitHub (pinned to f3058517a1)