pentaho/pentaho-kettle · error · KettleException

PropertyInputDialog.Exception.FileDoesNotExist

PropertyInputDialog.Exception.FileDoesNotExist

Error message

PropertyInputDialog.Exception.FileDoesNotExist

What it means

Thrown in PropertyInputDialog's constructor when loading field/section data: the first configured input file exists in the filename list but cannot be found on disk/VFS. The dialog needs the file to enumerate sections and fields and aborts when it is missing.

Solutions

  1. Verify the file exists at the resolved path and fix the filename in the File tab
  2. Check environment variable substitutions resolve to a valid path on this machine
  3. Create/copy the properties file to the expected location
  4. Use the Browse button to select the file so the path is definitely valid

Example fix

// before
String file = "${INPUT_DIR}/app.properties"; // INPUT_DIR unset on this host
// after
String file = "/data/config/app.properties"; // or set INPUT_DIR correctly
Defensive patterns

Strategy: validation

Validate before calling

String resolved = transMeta.environmentSubstitute(filename);
File f = new File(resolved);
if (!f.exists() || !f.isFile()) throw new FileNotFoundException("Property input file missing: " + resolved);

Try / catch

try { openDialog(); } catch (KettleException e) { // show 'file does not exist' message with resolved path }

Prevention

When it happens

Trigger: Opening the Property Input dialog (getData path) where the first file after environment substitution does not exist in the filesystem, so the existence check fails before reading.

Common situations: Environment variable pointing to a wrong location, file deleted or moved after the step was configured, typo in the filename, or running the dialog on a machine where the file path is not mounted.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


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

Appendix: source

Thrown at ui/src/main/java/org/pentaho/di/ui/trans/steps/propertyinput/PropertyInputDialog.java:1559

        // Check if it exists
        if ( theFirstFile.exists() ) {
          // Get all sections from the INI file
          String[] sectionNames = loadSectionsFromIniFile( theFirstFile );

          // Show the list for the user to select one section
          EnterSelectionDialog dialog = new EnterSelectionDialog( shell, sectionNames,
            BaseMessages.getString( PKG, "PropertyInputDialog.Dialog.SelectASection.Title" ),
            BaseMessages.getString( PKG, "PropertyInputDialog.Dialog.SelectASection.Message" ) );
          String sectionName = dialog.open();

          // If the user selected a section, set it in the dialog
          if ( sectionName != null ) {
            wSection.setText( sectionName );
          }
        } else {
          // The file not exists !
          throw new KettleException( BaseMessages.getString(
            PKG, "PropertyInputDialog.Exception.FileDoesNotExist", KettleVFS.getFilename( theFirstFile ) ) );
        }
      } else {
        // No file specified
        MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
        mb.setMessage( BaseMessages.getString( PKG, "PropertyInputDialog.FilesMissing.DialogMessage" ) );
        mb.setText( BaseMessages.getString( PKG, "System.Dialog.Error.Title" ) );
        mb.open();
      }
    } catch ( Exception e ) {
      new ErrorDialog(
        shell, BaseMessages.getString( PKG, "PropertyInputDialog.UnableToGetListOfSections.Title" ),
        BaseMessages.getString( PKG, "PropertyInputDialog.UnableToGetListOfSections.Message" ), e );
    }
  }

  private String[] loadSectionsFromIniFile( FileObject theFirstFile ) throws IOException, ConfigurationException {
    String[] sectionNames;

View on GitHub (pinned to f3058517a1)