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

  1. Enter/fix a valid path to an existing .mdb/.accdb file in the Filename field
  2. Define the environment variable used in the path before browsing
  3. Browse for the file using the file picker to avoid typos
  4. Verify network drive/share availability
  5. 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

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


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)