YarnChild.main uses JobConf.addResource(String) to load job.xml that relies on class loading. When mapreduce.job.classloader=true the job-speicific part of the class path is separated from CLASSPATH into APP_CLASSPATH. Therefore job.xml is inaccessible for the default class loader. Later writeLocalJobFile overwrites the correct localized job.xml on disk as well.
This problem is easily avoided by using JobConf.addResource(Path) to read the localized job.xml without relying on class loading.