{"record":{"id":"3ab5d70781bba02f","repo":"pinpoint-apm/pinpoint","slug":"j9bootloader-create-fail-caused-by","errorCode":null,"errorMessage":"J9BootLoader create fail Caused by:","messagePattern":"J9BootLoader create fail Caused by:","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/classloader/BootLoaderFactory.java","lineNumber":39,"sourceCode":"\n/**\n * @author Woonduk Kang(emeroad)\n */\npublic final class BootLoaderFactory {\n\n    private static final boolean isJ9Vm = isJ9VM();\n\n    private BootLoaderFactory() {\n    }\n\n\n    public static BootLoader newBootLoader() {\n        if (isJ9Vm) {\n            try {\n                return new J9BootLoader();\n            } catch (Error linkageError) {\n                // TODO log\n                throw new IllegalStateException(\"J9BootLoader create fail Caused by:\" + linkageError.getMessage(), linkageError);\n            }\n        }\n        return new LauncherBootLoader();\n    }\n\n    private static boolean isJ9VM() {\n        JvmType jvmType = JvmUtils.getType();\n        return jvmType == JvmType.IBM;\n    }\n\n}\n","sourceCodeStart":21,"sourceCodeEnd":51,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/classloader/BootLoaderFactory.java#L21-L51","documentation":"BootLoaderFactory.newBootLoader picks J9BootLoader on IBM J9 VMs; if instantiating J9BootLoader raises a linkage Error (missing classes/fields specific to the J9 internals it reflects on), it rethrows as IllegalStateException 'J9BootLoader create fail Caused by:...'.","triggerScenarios":"Running the Pinpoint agent on an IBM J9 JVM where J9BootLoader's reflective bootstrap access fails (different internal class names across J9/OpenJ9 versions).","commonSituations":"Newer OpenJ9 releases renamed internal bootstrap-classloader classes, agent attached to a J9 VM not matching the supported version, or a fat-jar missing J9BootLoader dependency classes.","solutions":["Verify the J9/OpenJ9 version against the agent's supported matrix and upgrade or downgrade the JVM","Check the Caused-by message to identify the missing class and whether the agent jar is complete","File/consult the issue for J9 compatibility; use an OpenJDK HotSpot JVM if possible","Keep isJ9Vm detection accurate so HotSpot VMs use LauncherBootLoader"],"exampleFix":"// JVM selection\n// before: running on unsupported OpenJ9 0.30+\n// after: use supported JDK\nJAVA_HOME=/path/to/jdk8-hotspot java -javaagent:pinpoint-bootstrap.jar ...","handlingStrategy":"try-catch","validationCode":"String vmName = System.getProperty(\"java.vm.name\");\nboolean j9 = vmName != null && vmName.contains(\"OpenJ9\") || (vmName != null && vmName.contains(\"IBM J9\"));\n// confirm supported JDK before attaching agent","typeGuard":null,"tryCatchPattern":"try { BootLoader bl = BootLoaderFactory.newBootLoader(); } catch (IllegalStateException e) { if (e.getMessage().startsWith(\"J9BootLoader create fail\")) { log.error(\"JVM unsupported for J9 bootstrap: {}\", e.getCause()); } throw e; }","preventionTips":["Pin the agent to JVM versions in the supported matrix","Verify java.vm.name before enabling J9 paths","Keep the agent jar fully intact (no shaded-away internal classes)","Test agent attach on each JVM upgrade in staging"],"tags":["java","classloader","j9","agent"],"backgroundTag":"module-init-failed","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}