pentaho/pentaho-kettle · error · KettleConfigException

No value found for property

Error message

No value found for property [<property>] and obbject class [<obj class name>]

What it means

PropertySetter.setProperty parses a config value as a colon-separated directive expression (e.g. 'i18n:pkg:key' or 'ognl:expr'). This error is thrown when splitting the value on ':' yields zero tokens, meaning the value is effectively empty or malformed, so no property value can be resolved. It wraps the failure as a KettleConfigException naming the target property and object class.

Solutions

  1. Set a non-empty value for the property in the configuration source being loaded.
  2. Check for variable/parameter substitution that resolved to an empty string and fix the variable definition.
  3. Use the correct directive prefix ('i18n:pkg:key' or 'ognl:expression') so the value parses into at least one token.
  4. Wrap the config loading call in try-catch on KettleConfigException to log which property is misconfigured.

Example fix

// before (config XML)
<property name="output.dir" value=""/>

// after
<property name="output.dir" value="/data/kettle/output"/>
Defensive patterns

Strategy: validation

Validate before calling

if (value == null || value.trim().isEmpty()) {
  throw new IllegalArgumentException("Property '" + property + "' requires a non-empty directive value");
}

Prevention

When it happens

Trigger: Calling PropertySetter.setProperty(obj, property, value) where value is empty or splits to zero tokens (e.g. value == "" with String.split producing a zero-length array in the library's split handling).

Common situations: Kettle configuration files where a property value was left blank or the value element was omitted; templated configs where a variable substitution resolved to nothing; hand-edited XML configs missing the value after the last edit.

Understand the failure class

Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/778f8db71be32507. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/org/pentaho/di/core/config/PropertySetter.java:49

 *
 */
public class PropertySetter {

  public static final String OGNL = "ognl";
  public static final String I18N = "i18n";

  private Map<String, OgnlExpression> ognlExpressions = new HashMap<>();

  private OgnlContext octx = new OgnlContext();

  // this should not be a static/factory method in order to allow caching of
  // compiled ognl expressions
  public void setProperty( Object obj, String property, String value ) throws KettleConfigException {
    String[] expression = value.split( ":" );
    Object val;

    if ( expression.length == 0 ) {
      throw new KettleConfigException( "No value found for property ["
        + property + "] and obbject class [" + obj.getClass().getName() + "]" );
    }

    String directive = expression[0];

    if ( I18N.equalsIgnoreCase( directive ) ) {
      val = setI18nProperty( expression, value );
    } else if ( OGNL.equalsIgnoreCase( directive ) ) {
      val = setOgnlProperty( expression, value );
    } else {
      val = value;
    }

    try {
      // SET!
      BeanUtils.setProperty( obj, property, val );
    } catch ( Exception e ) {
      throw new KettleConfigException( e );

View on GitHub (pinned to f3058517a1)