Skip to content

[Native Image] Dynamic loading of jvm.dlldoesn't link - regression since GraalVM21? #11152

@JaroslavTulach

Description

@JaroslavTulach

Describe the Issue

  • I am trying to launch (HotSpot) JVM from inside of native image application
  • I got it working on Mac and Linux
  • I cannot get it working on Windows and GraalVM for JDK 24
  • however it works on GraalVM for JDK 21!
  • e.g. it is some kind of regression

Using the latest version of GraalVM can resolve many issues.

GraalVM Version

https://github.com/JaroslavTulach/LaunchJdkViaJni/actions/runs/14883811948/job/41801352178?pr=1#step:3:20

  java 24.0.1 2025-04-15
  Java(TM) SE Runtime Environment Oracle GraalVM 24.0.1+9.1 (build 24.0.1+9-jvmci-b01)
  Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 24.0.1+9.1 (build 24.0.1+9-jvmci-b01, mixed mode, sharing)

Operating System and Version

Microsoft Windows Server 2022 10.0.20348

Build Command

Expected Behavior

Actual Behavior

  • mvn -Pnative install fails on GraalVM for JDK22, 23, 24
  • failure output:
 C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\svm\clibraries\windows-amd64\libchelper.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\net.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\extnet.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\nio.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\java.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\svm\clibraries\windows-amd64\jvm.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\svm\clibraries\windows-amd64\libchelper.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\net.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\extnet.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\nio.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\static\windows-amd64\java.lib 
C:\hostedtoolcache\windows\graalvm-jdk-24_windows-x64_bin\24.0.0\x64\graalvm-jdk-24.0.1+9.1\lib\svm\clibraries\windows-amd64\jvm.lib 
jvm.lib(jni.obj) : error LNK2005: JNI_GetDefaultJavaVMInitArgs already defined in LaunchJdkViaJni.obj
jvm.lib(jni.obj) : error LNK2005: JNI_CreateJavaVM already defined in LaunchJdkViaJni.obj
jvm.lib(jni.obj) : error LNK2005: JNI_GetCreatedJavaVMs already defined in LaunchJdkViaJni.obj
net.lib(net_util_md.obj) : error LNK2005: DllMain already defined in jvm.lib(os_windows.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_ActiveProcessorCount already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_BeforeHalt already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_CurrentTimeMillis already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_FindSignal already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_GetNanoTimeAdjustment already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_GetTemporaryDirectory already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_Halt already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_IsStaticallyLinked already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: JVM_NanoTime already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: jio_fprintf already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: jio_snprintf already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: jio_vfprintf already defined in jvm.lib(jvm.obj)
jvm.lib(JvmFuncs.obj) : error LNK2005: jio_vsnprintf already defined in jvm.lib(jvm.obj)
   Creating library C:\Users\RUNNER~1\AppData\Local\Temp\SVM-1062366860234045289\LaunchJdkViaJni.lib and object C:\Users\RUNNER~1\AppData\Local\Temp\SVM-1062366860234045289\LaunchJdkViaJni.exp
jvm.lib(os_windows.obj) : error LNK2019: unresolved external symbol CallNtPowerInformation referenced in function "public: static void __cdecl os::pd_print_cpu_info(class outputStream *,char *,unsigned __int64)" (?pd_print_cpu_info@os@@SAXPEAVoutputStream@@PEAD_K@Z)
jvm.lib(os_windows.obj) : error LNK2019: unresolved external symbol __imp_timeBeginPeriod referenced in function "public: int __cdecl PlatformEvent::park(__int64)" (?park@PlatformEvent@@QEAAH_J@Z)
jvm.lib(os_windows.obj) : error LNK2019: unresolved external symbol __imp_timeEndPeriod referenced in function "public: int __cdecl PlatformEvent::park(__int64)" (?park@PlatformEvent@@QEAAH_J@Z)
D:\a\LaunchJdkViaJni\LaunchJdkViaJni\target\LaunchJdkViaJni.exe : fatal error LNK1120: 3 unresolved externals

Steps to Reproduce

Additional Context

No response

Build Log Output and Error Messages

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions