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

  1. Read the wrapped cause exception to identify the actual launch failure
  2. Verify the configured filename points to the correct Talend job build and the class_name matches the generated class
  3. Rebuild/export the Talend job with a compatible Java version and re-deploy its files
  4. 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

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


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)