Cannot start Jenkins. I believe it happened after upgrading to JDK8.
I get the following exception while Jenkins is reading the config file:
Nov 10, 2015 5:39:40 PM jenkins.InitReactorRunner$1 onTaskFailed SEVERE: Failed Loading global config java.io.IOException: Unable to read /apps/jenkins/work/config.xml at hudson.XmlFile.unmarshal(XmlFile.java:165) at jenkins.model.Jenkins$17.run(Jenkins.java:2562) at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282) at jenkins.model.Jenkins$7.runTask(Jenkins.java:899) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: com.thoughtworks.xstream.converters.ConversionException: -1 : -1 ---- Debugging information ---- message : -1 cause-exception : java.lang.ArrayIndexOutOfBoundsException cause-message : -1 class : hudson.model.Hudson required-type : hudson.model.Hudson converter-type : hudson.util.RobustReflectionConverter path : /hudson/disabledAdministrativeMonitors line number : 3 version : not available ------------------------------- at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79) at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65) at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134) at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1061) at hudson.util.XStream2.unmarshal(XStream2.java:113) at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1045) at hudson.XmlFile.unmarshal(XmlFile.java:163) ... 9 more Caused by: java.lang.ArrayIndexOutOfBoundsException: -1 at com.thoughtworks.xstream.core.util.OrderRetainingMap.entrySet(OrderRetainingMap.java:77) at java.util.HashMap.putMapEntries(HashMap.java:511) at java.util.HashMap.putAll(HashMap.java:784) at com.thoughtworks.xstream.core.util.OrderRetainingMap.<init>(OrderRetainingMap.java:36) at com.thoughtworks.xstream.converters.reflection.FieldDictionary.buildMap(FieldDictionary.java:135) at com.thoughtworks.xstream.converters.reflection.FieldDictionary.fieldOrNull(FieldDictionary.java:113) at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.getFieldOrNull(PureJavaReflectionProvider.java:186) at hudson.util.RobustReflectionConverter.fieldDefinedInClass(RobustReflectionConverter.java:344) at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:283) at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:228) at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) ... 18 more
There's a previous report on the same topic: JENKINS-19031
However I my case I think the problem might be related to something else, namely that I run Sonatype Nexus too in the same server and Nexus happens to use Xstream as well. I can see this during startup:
2015-11-10 17:38:36 INFO [maven.myorg.com-startStop-1] - com.thoughtworks.xstream.XStream - Version: 1.4.6-SONATYPE-03, white-list support available
which is what indicates to me that Nexus also uses XStream. If that is the problem or not, I don't know. It is probably not that uncommon for a Jenkins site to run a Maven Repo Manager (e.g. Nexus) on the same server as Jenkins.