pentaho/pentaho-kettle · error · KettleException
JobGetMailsFromPOP.Error.OutputFolderNotExist
Error message
JobGetMailsFromPOP.Error.OutputFolderNotExist
What it means
createOutputDirectory(FOLDER_OUTPUT): when the resolved output folder does not exist and isCreateLocalFolder() is false, the entry refuses to create it and throws this KettleException with the folder name as a parameter. It honors the 'create folder' option instead of silently auto-creating directories.
Solutions
- Create the output directory manually at the configured path before running the job.
- Enable the 'Create local folder' option in the job entry so it auto-creates missing directories.
- Verify the path (mount points, permissions) is available in the runtime environment where kitchen executes the job.
Example fix
// before
if ( isCreateLocalFolder() ) { folder.createFolder(); } else { throw ... }
// after (fix in dialog): check 'Create folder'
<create_local_folder>Y</create_local_folder> Defensive patterns
Strategy: validation
Validate before calling
File out = new File(environmentSubstitute(getOutputFolder()));
if (!out.exists() && !out.mkdirs()) {
throw new IllegalArgumentException("Output directory missing and could not be created: " + out);
} Try / catch
try { executeJobEntry(); } catch (KettleException e) {
if (e.getMessage().contains("OutputFolderNotExist")) {
logError("Output directory does not exist: " + e.getMessage() + " — create it or enable 'Create local folder'");
} else { throw e; }
} Prevention
- Enable 'Create local folder' unless external policies forbid auto-creation.
- Provision required directories in deployment scripts/CI images.
- Remember kitchen runs on the server filesystem — paths must exist there.
When it happens
Trigger: folder.exists() is false, isCreateLocalFolder() returns false, and folderType is FOLDER_OUTPUT — i.e. output directory missing on disk and 'Create local folder' (or equivalent option) not checked.
Common situations: Job configured on one machine then run on another (kitchen) where the directory does not exist; network share unmounted so the path is missing; 'create folder' checkbox deliberately unchecked but directory was later deleted.
Related errors
- JobGetMailsFromPOP.Error.AttachmentFolderNotExist
- JobGetMailsFromPOP.Error.AttachmentFolderEmpty
- JobGetMailsFromPOP.Error.AttachmentFolderNotAFolder
- JobGetMailsFromPOP.Error.NotAFolderNot
- JobGetMailsFromPOP.Error.OutputFolderEmpty
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/1672eb2a9c21bf66.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/JobEntryGetPOP.java:1613
}
}
if ( isDebug() ) {
switch ( folderType ) {
case JobEntryGetPOP.FOLDER_OUTPUT:
logDebug( BaseMessages.getString( PKG, "JobGetMailsFromPOP.Log.OutputFolderExists", folderName ) );
break;
case JobEntryGetPOP.FOLDER_ATTACHMENTS:
logDebug( BaseMessages.getString( PKG, "JobGetMailsFromPOP.Log.AttachmentFolderExists", folderName ) );
break;
}
}
} else {
if ( isCreateLocalFolder() ) {
folder.createFolder();
} else {
switch ( folderType ) {
case JobEntryGetPOP.FOLDER_OUTPUT:
throw new KettleException( BaseMessages.getString(
PKG, "JobGetMailsFromPOP.Error.OutputFolderNotExist", folderName ) );
case JobEntryGetPOP.FOLDER_ATTACHMENTS:
throw new KettleException( BaseMessages.getString(
PKG, "JobGetMailsFromPOP.Error.AttachmentFolderNotExist", folderName ) );
}
}
}
String returnValue = KettleVFS.getFilename( folder );
try {
folder.close();
} catch ( IOException ignore ) {
//Ignore error, as the folder was created successfully
}
return returnValue;
}
}
View on GitHub (pinned to f3058517a1)