pentaho/pentaho-kettle · error · KettleException
AccessInputMeta.Exception.FileDoesNotExist
AccessInputMeta.Exception.FileDoesNotExist
Error message
AccessInputMeta.Exception.FileDoesNotExist
What it means
In the AccessInputDialog UI, the 'Get fields/tables' action requires the first selected file of the file list to exist. If the resolved file does not exist, the dialog throws KettleException with AccessInputMeta.Exception.FileDoesNotExist instead of opening the browse dialog.
Solutions
- Enter/fix a valid path to an existing .mdb/.accdb file in the Filename field
- Define the environment variable used in the path before browsing
- Browse for the file using the file picker to avoid typos
- Verify network drive/share availability
- Recreate the Access file if deleted
Example fix
null
Defensive patterns
Strategy: validation
Validate before calling
String real = transMeta.environmentSubstitute(wFilename.getText());
if (!(new File(real).exists())) {
new MessageBox(shell, SWT.OK | SWT.ICON_ERROR).setMessage("File not found: " + real);
return;
} Try / catch
try {
// dialog get-fields action
} catch (KettleException e) {
new MessageBox(shell, SWT.OK | SWT.ICON_ERROR).setMessage(e.getMessage());
// prompt user to fix the filename before proceeding
} Prevention
- Use the Browse button to pick files instead of typing paths
- Define path variables in Spoon's variables dialog before using the step
- Verify file existence on the machine running Spoon
- Handle deleted/moved files after config changes
When it happens
Trigger: Clicking the table/fields browse button in the Access Input dialog while the configured filename resolves to a nonexistent file (variable not set, typo, file deleted).
Common situations: Designing a step in Spoon with ${VAR}-based paths that aren't defined locally; file removed after initial configuration; missing drive mount on the developer machine.
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
- AccessOutputMeta.Exception.FileDoesNotExist
- AccessOutputMeta.Exception.ErrorGettingFields
- AccessOutputMeta.Exception.FileDoesNotExist
- AccessOutputMeta.Exception.TableDoesNotExist
- Cannot open control file
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/01836a210ea94e45.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/ms-access/ui/src/main/java/org/pentaho/di/ui/trans/steps/accessinput/AccessInputDialog.java:1546
// Get System tables
settables.addAll( accessDatabase.getSystemTableNames() );
// Get system tables
String[] tablenames = settables.toArray( new String[settables.size()] );
Const.sortStrings( tablenames );
EnterSelectionDialog dialog =
new EnterSelectionDialog( shell, tablenames,
BaseMessages.getString( PKG, "AccessInputDialog.Dialog.SelectATable.Title" ),
BaseMessages.getString( PKG, "AccessInputDialog.Dialog.SelectATable.Message" ) );
String tablename = dialog.open();
if ( tablename != null ) {
wTable.setText( tablename );
}
} else {
// The file not exists !
throw new KettleException( BaseMessages.getString(
PKG, "AccessInputMeta.Exception.FileDoesNotExist", KettleVFS
.getFilename( fileInputList.getFile( 0 ) ) ) );
}
} else {
// No file specified
MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
mb.setMessage( BaseMessages.getString( PKG, "AccessInputDialog.FilesMissing.DialogMessage" ) );
mb.setText( BaseMessages.getString( PKG, "System.Dialog.Error.Title" ) );
mb.open();
}
} catch ( Throwable e ) {
new ErrorDialog(
shell, BaseMessages.getString( PKG, "AccessInputDialog.UnableToGetListOfTables.Title" ), BaseMessages
.getString( PKG, "AccessInputDialog.UnableToGetListOfTables.Message" ), e );
} finally {
// Don't forget to close the bugger.
try {
if ( accessDatabase != null ) {View on GitHub (pinned to f3058517a1)