pentaho/pentaho-kettle · error · KettleException
ExcelInput.Exception.MissingRequiredFiles
ExcelInput.Exception.MissingRequiredFiles
Error message
ExcelInput.Exception.MissingRequiredFiles
What it means
handleMissingFiles checks the list of files that did not exist when the step tried to open them. If error handling is not configured to ignore errors, the step aborts the transformation with a KettleException summarizing all missing required files.
Solutions
- Verify the file path/wildcard in the Excel Input step's Files tab and fix it
- Ensure the upstream step/job that creates the files runs before this transformation
- Enable 'Ignore errors' and configure a non-existent-file error handler if missing files are expected
- Check the execution node actually has access to the path (mounted drive, working directory)
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check files exist before running the transformation FileObject f = KettleVFS.getInstance(bowl).getFileObject(path, transMeta); if (!f.exists()) throw new FileNotFoundException(path);
Try / catch
try {
transformation.execute();
} catch (KettleException e) {
if (e.getMessage().contains("MissingRequiredFiles")) {
// re-check inputs, trigger producer job, or re-run later
} else { throw e; }
} Prevention
- Verify file paths/wildcards in the Files tab against the execution node
- Run producing steps/jobs before the Excel Input transformation
- Use variables/parameters for environment-specific paths instead of absolutes
When it happens
Trigger: One or more files returned by data.files.getNonExistantFiles() do not exist at processRow time AND meta.isErrorIgnored() is false.
Common situations: Typo or stale path in the step's file/wildcard settings; files produced by an upstream job step that did not run; files deleted or renamed between planning and execution; running on an agent whose working directory differs.
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
- Cannot open control file
- Cannot open data file
- Could not delete stale file " + buildFilename
- CubeInputMeta.Exception.ErrorOpeningOrReadingCubeFile
- Error opening new file (logged), KettleException( e )
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/ef434fbe0ef3eca2.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/excel/core/src/main/java/org/pentaho/di/trans/steps/excelinput/ExcelInput.java:479
}
}
private void handleMissingFiles() throws KettleException {
List<FileObject> nonExistantFiles = data.files.getNonExistantFiles();
if ( !nonExistantFiles.isEmpty() ) {
String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );
if ( log.isBasic() ) {
logBasic( BaseMessages.getString( PKG, "ExcelInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
PKG, "ExcelInput.Warning.MissingFiles", message ) );
}
if ( meta.isErrorIgnored() ) {
for ( FileObject fileObject : nonExistantFiles ) {
data.errorHandler.handleNonExistantFile( fileObject );
}
} else {
throw new KettleException( BaseMessages.getString(
PKG, "ExcelInput.Exception.MissingRequiredFiles", message ) );
}
}
List<FileObject> nonAccessibleFiles = data.files.getNonAccessibleFiles();
if ( !nonAccessibleFiles.isEmpty() ) {
String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
if ( log.isBasic() ) {
logBasic( BaseMessages.getString( PKG, "ExcelInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
PKG, "ExcelInput.Log.RequiredFilesMsgNotAccessible", message ) );
}
if ( meta.isErrorIgnored() ) {
for ( FileObject fileObject : nonAccessibleFiles ) {
data.errorHandler.handleNonAccessibleFile( fileObject );
}
} else {
throw new KettleException( BaseMessages.getString(View on GitHub (pinned to f3058517a1)