pentaho/pentaho-kettle · error · KettleException
GPLoad.Exception.GPLoadCommandBuild
Error message
GPLoad.Exception.GPLoadCommandBuild
What it means
getPath() wraps any Apache Commons VFS FileSystemException raised while resolving or inspecting the file (or its parent) into a KettleException with key GPLoad.Exception.GPLoadCommandBuild, embedding fsex.getMessage(). It signals the gpload command line could not be built because the filesystem layer failed.
Solutions
- Fix the path syntax in the step settings (quote/escape spaces and special characters, especially on Windows).
- Check the embedded fsex message in the stack trace to identify the VFS-level cause.
- Use a plain local filesystem path if a remote or unusual scheme is failing.
- Verify Kettle VFS configuration and that the target filesystem is reachable.
Example fix
// before String path = "C:\Program Files\gpload\gpload.exe"; // unescaped backslashes/spaces // after String path = "C:/PROGRA~1/gpload/gpload.exe"; // or properly escaped path
Defensive patterns
Strategy: try-catch
Validate before calling
String path = "/opt/gp load/gpload";
if (path.matches(".*[^\\w/.:~-].*")) {
logBasic("Warning: path contains characters that may break VFS: " + path);
} Try / catch
try {
execute();
} catch (KettleException ke) {
Throwable root = ke;
while (root.getCause() != null) root = root.getCause();
logError("VFS failure building gpload command: " + root.getMessage(), ke);
throw ke;
} Prevention
- Avoid spaces and special characters in gpload-related paths
- Prefer plain local filesystem paths over exotic VFS schemes
- Read the embedded fsex message in the exception to pinpoint the VFS cause
When it happens
Trigger: KettleVFS.getFileObject() or fileObject.exists()/getParent()/getURL() throws FileSystemException - e.g., an invalid or unsupported URI scheme, malformed path characters, or VFS provider errors.
Common situations: Paths with characters VFS cannot parse (unescaped spaces or symbols, bad Windows paths); unsupported URI scheme; VFS misconfiguration or missing provider; network filesystem unreachable.
Understand the failure class
Background: "Invalid URL" errors: why new URL(), URI.parse, and reqwest::Url reject your string — missing scheme, whitespace, and bad path format — this error's family across 39 libraries.
Related errors
- Error while closing output
- Error while executing \'" + commandLine + "\'. Exit value =…
- exceptionMessage
- GPLoad.Exception.DirectoryDoesNotExist
- GPLoad.Execption.FileDoesNotExist
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/3b83aba2626dafb2.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoad.java:482
} else { // if the file does not have to exist, the parent, or source folder, does.
FileObject parentFolder = fileObject.getParent();
if ( parentFolder.exists() ) {
return KettleVFS.getFilename( fileObject );
} else {
throw new KettleException( BaseMessages.getString( PKG, "GPLoad.Exception.DirectoryDoesNotExist",
parentFolder.getURL().getPath() ) );
}
}
// if Windows is the OS
if ( Const.getOS().startsWith( "Windows" ) ) {
return addQuotes( pathToFile );
} else {
return KettleVFS.getFilename( fileObject );
}
} catch ( FileSystemException fsex ) {
throw new KettleException( BaseMessages.getString( PKG, "GPLoad.Exception.GPLoadCommandBuild", fsex.getMessage() ) );
}
}
/**
* Create the command line for GPLoad depending on the meta information supplied.
*
* @param meta
* The meta data to create the command line from
* @param password
* Use the real password or not
*
* @return The string to execute.
*
* @throws KettleException
* Upon any exception
*/
public String createCommandLine( GPLoadMeta meta, boolean password ) throws KettleException {
View on GitHub (pinned to f3058517a1)