pentaho/pentaho-kettle · error · KettleException
ERROR_0006_ExceptionExecutingTalenJob
ERROR_0006_ExceptionExecutingTalenJob
Error message
JobEntryTalendJobExec.ERROR_0006_ExceptionExecutingTalenJob
What it means
Thrown by JobEntryTalendJobExec.executeTalenJob (invoked from execute) when any Exception occurs while launching the external Talend job process. It wraps the underlying exception, so the root cause (class not found, process failure, IO error) is attached. The job entry result is never produced when this fires.
Solutions
- Read the wrapped cause exception to identify the actual launch failure
- Verify the configured filename points to the correct Talend job build and the class_name matches the generated class
- Rebuild/export the Talend job with a compatible Java version and re-deploy its files
- Check file permissions and disk space in the directory where the Talend job is extracted/run
Example fix
// before jobExec.setFilename( "/old/path/MyJob" ); // after File f = new File( "/new/path/MyJob/MyJob.jar" ); if ( f.exists() ) jobExec.setFilename( "/new/path/MyJob" );
Defensive patterns
Strategy: try-catch
Validate before calling
if ( !new File( jobExec.getFilename(), "build.xml" ).exists() && !new File( jobExec.getFilename() + ".jar" ).exists() ) { throw new IllegalStateException( "Talend job build not found: " + jobExec.getFilename() ); } Try / catch
try { Result r = jobExec.execute( result, nr ); } catch ( KettleException e ) { log.error( "Talend job execution failed", e.getCause() ); result.setNrErrors( 1 ); } Prevention
- Deploy the Talend job build alongside the Kettle job
- Match JVM versions between Talend build and Pentaho runtime
- Validate filename/class_name settings after moving deployments
- Check temp/extract directory permissions
When it happens
Trigger: Executing a Talend job entry whose generated Java classes/jars are missing from the classpath, the extracted build files were deleted, or the child process cannot be launched/awaited (IOException, ClassNotFoundException, InterruptedException).
Common situations: Talend job built with a different JVM version than Pentaho; the job's export directory moved or cleaned up between design and execution; wrong filename/class_name configured on the entry; file system permission problems in the temp/extract directory.
Understand the failure class
Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.
Related errors
- Error while executing \'" + commandLine + "\'. Exit value =…
- Error while executing psql \'
- ExecProcess.ProcessEmpty
- A connection of type PALO is expected
- A connection of type PALO is expected
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/27f0ccf076d24ca8.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/talendjobexec/JobEntryTalendJobExec.java:214
classLoaderCache.put( file.toString(), classLoader );
}
Class<?> clazz = classLoader.loadClass( environmentSubstitute( getClassName() ) );
Object jobObject = clazz.newInstance();
Method runJob = clazz.getMethod( "runJobInTOS", String[].class );
// TODO: consider passing something of some sort in this next method:
// variables, arguments...
//
int returnCode = (Integer) runJob.invoke( jobObject, (Object) new String[] {} );
result.setExitStatus( returnCode );
result.setResult( true );
result.setNrErrors( 0 );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobEntryTalendJobExec.ERROR_0006_ExceptionExecutingTalenJob" ), e );
}
return result;
}
private URL[] prepareJarFiles( FileObject zipFile ) throws Exception {
// zip:file:///tmp/foo.zip
FileInputList fileList = FileInputList.createFileList( parentJobMeta.getBowl(), this,
new String[] { "zip:" + zipFile.toString(), },
new String[] { ".*\\.jar$", }, // Include mask: only jar files
new String[] { ".*classpath\\.jar$", }, // Exclude mask: only jar files
new String[] { "Y", }, // File required
new boolean[] { true, } ); // Search sub-directories
List<URL> files = new ArrayList<URL>();
View on GitHub (pinned to f3058517a1)