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
- Verify the file exists at the resolved path and fix the filename in the File tab
- Check environment variable substitutions resolve to a valid path on this machine
- Create/copy the properties file to the expected location
- 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
- Verify environment variables resolve on every target machine
- Use the Browse button to pick files
- Check file existence after any move/deploy
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
- Bounds of this rule are not numeric: lowerBound=
- JobExecutorDialog.Exception.NoValidMappingDetailsFound
- JobExecutorDialog.Exception.UnableToFindRepositoryDirectory
- MappingDialog.Exception.NotConnectedToRepository.Message
- MappingDialog.Exception.NoValidMappingDetailsFound
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)