{"record":{"id":"3b807ff36aebcc39","repo":"pentaho/pentaho-kettle","slug":"error-0001-cannot-load-job-entry-from-xml-node-3b807f","errorCode":"ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node","errorMessage":"JobEntryTalendJobExec.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node","messagePattern":"JobEntryTalendJobExec\\.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node","errorType":"error_code","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/talendjobexec/JobEntryTalendJobExec.java","lineNumber":105,"sourceCode":"\n  public String getXML() {\n    StringBuilder retval = new StringBuilder( 50 );\n\n    retval.append( super.getXML() );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"filename\", filename ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"class_name\", className ) );\n\n    return retval.toString();\n  }\n\n  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,\n    Repository rep, IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      filename = XMLHandler.getTagValue( entrynode, \"filename\" );\n      className = XMLHandler.getTagValue( entrynode, \"class_name\" );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryTalendJobExec.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node\" ), xe );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      filename = rep.getJobEntryAttributeString( id_jobentry, \"filename\" );\n      className = rep.getJobEntryAttributeString( id_jobentry, \"class_name\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"JobEntryTalendJobExec.ERROR_0002_Cannot_Load_Job_From_Repository\", id_jobentry ), dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"filename\", filename );","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/talendjobexec/JobEntryTalendJobExec.java#L87-L123","documentation":"JobEntryTalendJobExec.loadXML first calls super.loadXML and then reads the filename and class_name tags; any KettleXMLException encountered is rethrown as a KettleXMLException with the code-tagged message 'JobEntryTalendJobExec.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node' and the original as cause. It signals the Talend job executor entry could not be rebuilt from its XML node.","triggerScenarios":"Calling loadXML on a job entry node when the parent JobEntryBase.loadXML fails or XMLHandler.getTagValue throws due to malformed/unexpected XML content for filename or class_name.","commonSituations":"Hand-edited or corrupted .kjb files; missing nested tags after a partial file write or bad merge in version control; a job exported by a newer Pentaho version and loaded by an older one with a different XML layout.","solutions":["Validate the <entry> node in the .kjb contains well-formed <filename> and <class_name> tags","Restore the job file from a known-good copy (git history, backup)","Open and re-save the job in a matching Pentaho/Spoon version","Read the chained cause (xe) to pinpoint whether super.loadXML or the tag reads failed"],"exampleFix":"// before: truncated node in .kjb\n<filename>talend_job</filename>\n<!-- class_name tag missing / file truncated -->\n// after\n<filename>/jobs/myJob.jar</filename>\n<class_name>myjob.MyJob</class_name>","handlingStrategy":"try-catch","validationCode":"// Java: check required tags exist before loadXML\nif (XMLHandler.getTagValue(entrynode, \"filename\") == null) {\n  throw new KettleXMLException(\"TalendJobExec entry missing <filename> tag\");\n}","typeGuard":"if (entrynode != null && XMLHandler.getNodeByTag(entrynode, \"filename\") != null) { /* safe */ }","tryCatchPattern":"try {\n  entry.loadXML(entrynode, databases, slaveServers, rep, metaStore);\n} catch (KettleXMLException e) {\n  logError(\"ERROR_0001: \" + e.getCause(), e);\n  // restore job file from backup or recreate the entry in Spoon\n}","preventionTips":["Never hand-edit .kjb XML without validating afterwards","Store job files in git and check diffs on merge conflicts","Match Pentaho versions between export and import","Inspect the chained cause to identify which tag read failed"],"tags":["pentaho-kettle","xml","talend"],"backgroundTag":"xml-parse-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}