pentaho/pentaho-kettle · error · KettleException
Following required files are missing:
Error message
Following required files are missing:
What it means
BaseFileInputStepUtils.handleMissingFiles() collects the list of input files that do not exist and throws a KettleException listing them when errors are not ignored. File-input steps abort rather than continue when required files are absent and no error handling is configured.
Solutions
- Create/restore the missing files listed in the exception message at the expected paths.
- Fix the filename/wildcard or variable value in the step's File tab.
- Enable 'Ignore missing files' / configure step error handling so nonexistent files are tolerated.
- Verify variable substitution (${Internal...}) resolves correctly in the execution environment.
Example fix
// before
String file = "/data/${TODAY}.csv"; // variable unset -> path /data/${TODAY}.csv missing
// after
String file = "/data/" + getVariable("TODAY", "") + ".csv"; // resolves to existing file Defensive patterns
Strategy: validation
Validate before calling
for (String file : files) {
if (!new java.io.File(file).exists()) {
throw new IllegalStateException("Missing input file: " + file);
}
} Try / catch
try {
trans.execute(null);
} catch (KettleException e) {
if (e.getMessage().startsWith("Following required files are missing")) {
// provision files or adjust the file pattern, then retry
} else { throw e; }
} Prevention
- Pre-check all configured input files exist before executing the transformation.
- Use explicit file lists or well-tested wildcards; log resolved filenames.
- Configure step error handling to tolerate missing files when acceptable.
- Verify environment variables resolve to valid paths on the execution node.
When it happens
Trigger: Running a text-file-input/CSV step whose resolved file list contains nonexistent files while the step's error-handling setting is not 'ignore missing files'.
Common situations: Wildcard patterns matching nothing; files removed or renamed after the transformation was designed; wrong directory; running on an agent where the files were not deployed; variable/parameter pointing to a wrong path.
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
- FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonExistantFile
- Following required files are not accessible:
- AbstractFileErrorHandler.Exception.CouldNotCreateFileErrorHandlerForFile
- AbstractFileErrorHandler.Exception.CouldNotCloseFile
- AvroInputDialog.Error.KettleFileException
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/ceeeda8b454fd329.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/file/BaseFileInputStepUtils.java:49
* @author Alexander Buloichik
*/
public class BaseFileInputStepUtils {
public static void handleMissingFiles( FileInputList files, LogChannelInterface log, boolean isErrorIgnored,
FileErrorHandler errorHandler ) throws KettleException {
List<FileObject> nonExistantFiles = files.getNonExistantFiles();
if ( !nonExistantFiles.isEmpty() ) {
String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );
if ( log.isBasic() ) {
log.logBasic( "Required files", "WARNING: Missing " + message );
}
if ( isErrorIgnored ) {
for ( FileObject fileObject : nonExistantFiles ) {
errorHandler.handleNonExistantFile( fileObject );
}
} else {
throw new KettleException( "Following required files are missing: " + message );
}
}
List<FileObject> nonAccessibleFiles = files.getNonAccessibleFiles();
if ( !nonAccessibleFiles.isEmpty() ) {
String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
if ( log.isBasic() ) {
log.logBasic( "Required files", "WARNING: Not accessible " + message );
}
if ( isErrorIgnored ) {
for ( FileObject fileObject : nonAccessibleFiles ) {
errorHandler.handleNonAccessibleFile( fileObject );
}
} else {
throw new KettleException( "Following required files are not accessible: " + message );
}
}
}View on GitHub (pinned to f3058517a1)