diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java index 9d582df64e..ecf936e562 100644 --- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java +++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Offline.java @@ -22,23 +22,27 @@ */ public final class Offline { - private static final RuntimeData DATA; private static final String CONFIG_RESOURCE = "/jacoco-agent.properties"; - static { - final Properties config = ConfigLoader.load(CONFIG_RESOURCE, - System.getProperties()); - try { - DATA = Agent.getInstance(new AgentOptions(config)).getData(); - } catch (final Exception e) { - throw new RuntimeException("Failed to initialize JaCoCo.", e); - } - } - private Offline() { // no instances } + private static RuntimeData data; + + private static synchronized RuntimeData getRuntimeData() { + if (data == null) { + final Properties config = ConfigLoader.load(CONFIG_RESOURCE, + System.getProperties()); + try { + data = Agent.getInstance(new AgentOptions(config)).getData(); + } catch (final Exception e) { + throw new RuntimeException("Failed to initialize JaCoCo.", e); + } + } + return data; + } + /** * API for offline instrumented classes. * @@ -52,7 +56,7 @@ private Offline() { */ public static boolean[] getProbes(final long classid, final String classname, final int probecount) { - return DATA + return getRuntimeData() .getExecutionData(Long.valueOf(classid), classname, probecount) .getProbes(); } diff --git a/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml b/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml index 65625c8471..0da651109b 100644 --- a/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml +++ b/org.jacoco.ant.test/src/org/jacoco/ant/InstrumentTaskTest.xml @@ -139,8 +139,8 @@ - - + +