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
- Verify the file exists at the exact path shown in the exception message
- Check that variables in the filename resolve correctly in this environment
- 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
- Verify variable-driven filenames resolve in every target environment
- Confirm network mounts/remote hosts are reachable before browsing
- Avoid wildcards when you need a concrete sample file
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
- ChangeFileEncoding.Error.SourceFileNotExists
- Error retrieving command string
- file [ + ArgList[0] + ] can not be found!
- SFTPPut.Error.CanNotFindField
- TransMeta.Exception.InvalidXMLPath
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)