JobServer TempDataCleaner fails, throwing an 'java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils' exception

Talend Version 6.1.1, 6.2.1

Summary

JobServer TempDataCleaner fails to clean up files and directories due to the NoClassDefFoundError exception.
Additional Versions  
Keywords JobServer, deploy, NoClassDefFoundError org/apache/commons/io/FileUtils
Product Data Integration
Component JobServer
Problem Description

The JobServer cleanup thread no longer works, and the logs are filling up the disk. The JobServer log file shows the following exceptions:

WARN FileDirCleaner - TempDataCleaner: 1524 error(s) have occurred when trying to clean the following file or directory 'C:\Talend\6.1.1\jobserver\agent\.\TalendJobServersFiles\cache\lib', the first error is the following :
java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
 at org.talend.utils.files.FileDirCleaner.cleanFilesDirRecursively(FileDirCleaner.java:299)
 at org.talend.utils.files.FileDirCleaner.clean(FileDirCleaner.java:235)
 at org.talend.remote.jobserver.server.JobServerCleaner.clean(JobServerCleaner.java:139)
 ...
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
 at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Problem root cause

The org.apache.commons.io.FileUtils class (referenced in the NoClassDefFoundError you are encountering) belongs to the commons-io-*.jar file. The problem is that the scripts used to start the JobServer are referencing the old commons-io-1.3.2.jar file. This JAR file is no longer shipped. Instead, the shipped version is now commons-io-2.2.jar.

Solution or Workaround

Upgrade to Talend version 6.3.1 or above.

 

Workaround for version 6.1.1

Edit the start_rs.bat|.sh file (if JobServer starts from a script) or the wrapper.conf file (if JobServer starts from a Service) and replace the commons-io-1.3.2.jar file with the commons-io-2.2.jar file. Then restart the JobServer.

 

Workaround for version 6.2.1

Edit the wrapper.conf file (located under jobserver-dir\TalendServices\conf\) as this occurs only when JobServer runs as a Service, and replace the commons-io-1.3.2.jar file with the commons-io-2.2.jar file. Then restart the JobServer.

JIRA ticket number TMC-6662
Version history
Revision #:
10 of 10
Last update:
‎04-14-2019 02:31 AM
Updated by: