pinpoint-apm/pinpoint · warning

Dump JDK info java.vm.name:{} java.version:{}

Error message

Dump JDK info java.vm.name:{} java.version:{}

What it means

This is a diagnostic warning dumped by JavaLangAccessHelper when it cannot resolve or load the internal jdk.internal.misc.JavaLangAccess accessor on the current JDK. It logs the JVM name and version so maintainers can identify an unsupported JDK build. The agent's JDK9 class-definition feature may be disabled or non-functional as a result.

Source

Thrown at agent-module/profiler-optional/profiler-optional-jdk9/src/main/java/com/navercorp/pinpoint/profiler/instrument/classloading/JavaLangAccessHelper.java:47

    // Java 9 version over and after
    private static final String MISC_SHARED_SECRETS_CLASS_NAME = "jdk.internal.misc.SharedSecrets";
    private static final String MISC_JAVA_LANG_ACCESS_CLASS_NAME = "jdk.internal.misc.JavaLangAccess";
    // Java 12 version over and after
    private static final String ACCESS_SHARED_SECRETS_CLASS_NAME = "jdk.internal.access.SharedSecrets";
    private static final String ACCESS_JAVA_LANG_ACCESS_CLASS_NAME = "jdk.internal.access.JavaLangAccess";

    private static final JavaLangAccess JAVA_LANG_ACCESS = newJavaLangAccessor();

    private JavaLangAccessHelper() {
    }

    public static JavaLangAccess getJavaLangAccess() {
        return JAVA_LANG_ACCESS;
    }

    // for debugging
    private static void dumpJdkInfo() {
        logger.warn("Dump JDK info java.vm.name:{} java.version:{}", JvmUtils.getSystemProperty(SystemPropertyKey.JAVA_VM_NAME), JvmUtils.getSystemProperty(SystemPropertyKey.JAVA_VM_VERSION));
    }


    private static JavaLangAccess newJavaLangAccessor()  {
        try {
            Class.forName(MISC_JAVA_LANG_ACCESS_CLASS_NAME, false, JavaLangAccess.class.getClassLoader());
            return new JavaLangAccess9();
        } catch (ClassNotFoundException ignored) {
            // ignore
        }
        try {
            // https://github.com/naver/pinpoint/issues/6752
            // Oracle JDK11 : jdk.internal.access
            // openJDK11 =  jdk.internal.misc
            Class.forName(ACCESS_SHARED_SECRETS_CLASS_NAME, false, JavaLangAccess.class.getClassLoader());
            return new JavaLangAccess11();
        } catch (ClassNotFoundException ignored) {
            // ignore

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Compare the dumped java.vm.name/java.version with the JDK compatibility matrix of your Pinpoint agent version and upgrade the agent
  2. For JDK 15+, the class moved to jdk.internal.access.JavaLangAccess; use a Pinpoint agent version that supports it
  3. Add the required --add-exports/--add-opens JVM flags for internal JDK packages
  4. Run the agent on a JDK version officially supported by the agent build

Example fix

// before: running on JDK 16 with an agent built for JDK 9-11
// after: pin JVM or agent
// JAVA_OPTS="$JAVA_OPTS -Djava.version-compatible" -> use pinpoint-agent supporting your JDK
// e.g. agent 2.4.x+ for JDK 17, or run on JDK 11
Defensive patterns

Strategy: validation

Validate before calling

String ver = System.getProperty("java.version");
boolean supported = ver.startsWith("1.8") || ver.startsWith("9.") || ver.startsWith("11.");

Prevention

When it happens

Trigger: newJavaLangAccessor() failing Class.forName("jdk.internal.misc.JavaLangAccess") or its setup, which triggers dumpJdkInfo to record java.vm.name and java.version before falling back.

Common situations: Running the Pinpoint agent on a JDK 9+ build where jdk.internal.misc was moved/renamed (e.g. newer JDK using jdk.internal.access.JavaLangAccess); unsupported vendor JVM; missing --add-exports for internal packages.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/7f1c657b81304377. Report an issue: GitHub.