pentaho/pentaho-kettle · error · KettleException

GetXMLDataDialog.Exception.FileDoesNotExist

Error message

GetXMLDataDialog.Exception.FileDoesNotExist

What it means

Thrown by the GetXMLDataDialog when the user clicks a browse/preview action and the first file in the constructed FileInputList does not exist. The dialog builds a VFS file list from the filename/wildcard fields, checks fileinputList.getFile(0).exists(), and aborts with a KettleException naming the missing file so population of loop paths cannot proceed.

Solutions

  1. Verify the file exists at the exact path shown in the exception message
  2. Check that variables in the filename resolve correctly in this environment
  3. Fix typos/case and confirm network mounts or remote connections are active

Example fix

// before
File: ${DATA_DIR}/sample.xml   // DATA_DIR unset => path missing
// after
File: /data/inbound/sample.xml  (verified exists)
Defensive patterns

Strategy: validation

Validate before calling

// Before opening/previewing, check the resolved file exists
java.io.File f = new java.io.File(resolveVariables(filenameField));
if (!f.exists()) {
    throw new IllegalArgumentException("XML file does not exist: " + f.getPath());
}

Try / catch

try {
    dialog.open();
} catch (KettleException e) {
    if (e.getMessage().contains("FileDoesNotExist")) {
        // correct the filename or fix variable resolution and retry
    }
}

Prevention

When it happens

Trigger: The 'File/URL' field (or a variable in it) resolves to a nonexistent path when the dialog validates the first file; filename typed with typo; file deleted or on an unavailable network share.

Common situations: Variables not resolved to actual paths in the current environment; missing drive mount or SFTP host; case-sensitivity mismatch on Linux; file moved after configuring the step.

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/2a0034dbc10108b6. Report an issue: GitHub.

Appendix: source

Thrown at plugins/xml/core/src/main/java/org/pentaho/di/ui/trans/steps/getxmldata/GetXMLDataDialog.java:1401

            EnterTextDialog d =
                new EnterTextDialog( shell, BaseMessages.getString( PKG, "GetXMLDataDialog.AskXML.Title" ),
                    BaseMessages.getString( PKG, "GetXMLDataDialog.AskXML.Message" ), null );
            xml = d.open();
          }
          populateLoopPaths( meta, xml, true, false );
        }
      } else {

        FileInputList fileinputList = meta.getFiles( transMeta.getBowl(), transMeta );

        if ( fileinputList.nrOfFiles() > 0 ) {
          // Check the first file

          if ( fileinputList.getFile( 0 ).exists() ) {
            populateLoopPaths( meta, KettleVFS.getFilename( fileinputList.getFile( 0 ) ), false, false );
          } else {
            // The file not exists !
            throw new KettleException( BaseMessages.getString( PKG, "GetXMLDataDialog.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, "GetXMLDataDialog.FilesMissing.DialogMessage" ) );
          mb.setText( BaseMessages.getString( PKG, "System.Dialog.Error.Title" ) );
          mb.open();
        }
      }
    } catch ( Exception e ) {
      new ErrorDialog( shell, BaseMessages.getString( PKG, "GetXMLDataDialog.UnableToGetListOfPaths.Title" ),
          BaseMessages.getString( PKG, "GetXMLDataDialog.UnableToGetListOfPaths.Message" ), e );
    }
  }

  private void get() {
    InputStream is = null;

View on GitHub (pinned to f3058517a1)