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 @@
-
-
+
+