diff --git a/smoke-tests/apps/RuntimeAttach/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java b/smoke-tests/apps/RuntimeAttach/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java index 4e55aefe9be..6bd7b4cfe7d 100644 --- a/smoke-tests/apps/RuntimeAttach/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java +++ b/smoke-tests/apps/RuntimeAttach/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java @@ -13,6 +13,13 @@ public class SpringBootApp extends SpringBootServletInitializer { public static void main(String[] args) { + // Pre-load MethodHandle to avoid ClassCircularityError on Java 17 with runtime attach + // See https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/3396 + try { + Class.forName("java.lang.invoke.MethodHandle"); + } catch (ClassNotFoundException e) { + // ignore + } ApplicationInsights.attach(); SpringApplication.run(SpringBootApp.class, args); } diff --git a/smoke-tests/apps/RuntimeAttachWithDelayedConnectionString/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java b/smoke-tests/apps/RuntimeAttachWithDelayedConnectionString/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java index 4d1172cfc62..1aa3a17bb6b 100644 --- a/smoke-tests/apps/RuntimeAttachWithDelayedConnectionString/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java +++ b/smoke-tests/apps/RuntimeAttachWithDelayedConnectionString/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java @@ -16,6 +16,13 @@ public class SpringBootApp extends SpringBootServletInitializer { private static final String FAKE_INGESTION_ENDPOINT = "http://host.testcontainers.internal:6060/"; public static void main(String[] args) { + // Pre-load MethodHandle to avoid ClassCircularityError on Java 17 with runtime attach + // See https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/3396 + try { + Class.forName("java.lang.invoke.MethodHandle"); + } catch (ClassNotFoundException e) { + // ignore + } ApplicationInsights.attach(); ConnectionString.configure( "InstrumentationKey=00000000-0000-0000-0000-0FEEDDADBEEF;IngestionEndpoint="