Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8330622

UnsatisfiedLinkError in System.loadLibrary is not caught by the catch clause

XMLWordPrintable

    • generic
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      openjdk version "22.0.1" 2024-04-16
      OpenJDK Runtime Environment (build 22.0.1+8-16)
      OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)



      A DESCRIPTION OF THE PROBLEM :
      When I run the program I get:
      D:\Workspace\Panama\minimal\jar>"c:\Program Files\openjdk-22.0.1_windows-x64_bin\jdk-22.0.1\bin\java.exe" -Djava.library.path="c:\Windows\System32" --enable-native-access=ALL-UNNAMED -jar minimal-1.0.jar
      21:23:21,371 INFO Main - PKCS#11 starting. Library=QsmLib
      Exception in thread "main" java.lang.UnsatisfiedLinkError: no QsmLib in java.library.path: c:\Windows\System32
              at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2439)
              at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916)
              at java.base/java.lang.System.loadLibrary(System.java:2068)
              at panama.Panama.<init>(Panama.java:16)
              at panama.Main.main(Main.java:18)

      Although the program is:
      public Panama(String libraryName) {
              this.libraryName = libraryName;

              try {
                  System.loadLibrary(libraryName);
              } catch (Exception e) {
                  LOGGER.fatal("Failed to load library {}: ", libraryName, e);
              }
          }


      REGRESSION : Last worked in version 22.0.1

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the program

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Failed to load library {}:
      ACTUAL -
      no QsmLib in java.library.path:

      ---------- BEGIN SOURCE ----------
      package panama;

      import org.apache.logging.log4j.LogManager;
      import org.apache.logging.log4j.Logger;

      public class Main {

          private static final Logger LOGGER = LogManager.getLogger("Main");

          private static String libraryName = "QsmLib";

          private static Panama panama;

          public static void main(String[] args) {

              LOGGER.info("PKCS#11 starting. Library={}", libraryName);

              panama = new Panama(libraryName);

          }
      }

      package panama;

      import org.apache.logging.log4j.LogManager;
      import org.apache.logging.log4j.Logger;

      public class Panama {

          private static final Logger LOGGER = LogManager.getLogger("Panama");

          private String libraryName;

          public Panama(String libraryName) {
              this.libraryName = libraryName;

              try {
                  System.loadLibrary(libraryName);
              } catch (Exception e) {
                  LOGGER.fatal("Failed to load library {}: ", libraryName, e);
              }
          }

          public String getLibraryName() {
              return libraryName;
          }

      }

      <?xml version="1.0" encoding="UTF-8"?>
      <Configuration>
          <Appenders>
              <Console name="STDOUT" target="SYSTEM_OUT">
                  <PatternLayout pattern="%d{ABSOLUTE} %-5p %c{1} - %m%n"/>
              </Console>
          </Appenders>
          <Loggers>
              <Root level="DEBUG">
                  <AppenderRef level="INFO" ref="STDOUT"/>
              </Root>
          </Loggers>
      </Configuration>
      ---------- END SOURCE ----------

      FREQUENCY : always


            tongwan Andrew Wang
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: