Class Library

java.lang.Object
org.lwjgl.system.Library

public final class Library extends Object
Initializes the LWJGL shared library and handles loading additional shared libraries.
See Also:
  • Field Details

    • JNI_LIBRARY_NAME

      public static final String JNI_LIBRARY_NAME
      The LWJGL shared library name.
  • Method Details

    • initialize

      public static void initialize()
      Ensures that the LWJGL shared library has been loaded.
    • loadSystem

      public static void loadSystem(String module, String name) throws UnsatisfiedLinkError
      Calls loadSystem(Consumer, Consumer, Class, String, String) using Library.class as the context parameter.
      Throws:
      UnsatisfiedLinkError
    • loadSystem

      public static void loadSystem(Consumer<String> load, Consumer<String> loadLibrary, Class<?> context, String module, String name) throws UnsatisfiedLinkError
      Loads a JNI shared library.
      Parameters:
      load - should be the System::load expression. This ensures that System.load has the same caller as this method.
      loadLibrary - should be the System::loadLibrary expression. This ensures that System.loadLibrary has the same caller as this method.
      context - the class to use to discover the shared library in the classpath
      module - the module to which the shared library belongs
      name - the library name. If not an absolute path, it must be the plain library name, without an OS specific prefix or file extension (e.g. GL, not libGL.so)
      Throws:
      UnsatisfiedLinkError - if the library could not be loaded
    • loadNative

      public static SharedLibrary loadNative(String module, String name)
      Calls loadNative(Class, String, String) using Library.class as the context parameter.
    • loadNative

      public static SharedLibrary loadNative(Class<?> context, String module, String name)
      Loads a shared library using OS-specific APIs (e.g. LoadLibrary or dlopen).
      Parameters:
      context - the class to use to discover the shared library in the classpath
      module - the module to which the shared library belongs
      name - the library name. OS-specific prefixes and file extensions are optional (e.g. both "GL" and "libGL.so.1" are valid on Linux)
      Returns:
      the shared library
      Throws:
      UnsatisfiedLinkError - if the library could not be loaded
    • loadNative

      public static SharedLibrary loadNative(Class<?> context, String module, String name, boolean bundledWithLWJGL)
      Loads a shared library using OS-specific APIs (e.g. LoadLibrary or dlopen).
      Parameters:
      context - the class to use to discover the shared library in the classpath
      module - the module to which the shared library belongs
      name - the library name. OS-specific prefixes and file extensions are optional (e.g. both "GL" and "libGL.so.1" are valid on Linux)
      bundledWithLWJGL - whether the default LWJGL distribution includes the shared library. If true, LWJGL will also try to find the shared library under the <platform>/<arch>/<module> subfolder.
      Returns:
      the shared library
      Throws:
      UnsatisfiedLinkError - if the library could not be loaded
    • loadNative

      public static SharedLibrary loadNative(Class<?> context, String module, @Nullable Configuration<String> name, String... defaultNames)
      Loads a shared library using loadNative(String, String) with the name specified by name. If name is not set, loadNative(String, String) will be called with the names specified by defaultNames. The first successful will be returned.
      Parameters:
      name - a Configuration that specifies the library name
      defaultNames - the default library name(s)
      Returns:
      the shared library
      Throws:
      UnsatisfiedLinkError - if the library could not be loaded
    • loadNative

      public static SharedLibrary loadNative(Class<?> context, String module, @Nullable Configuration<String> name, @Nullable Supplier<SharedLibrary> fallback, String... defaultNames)
      Loads a shared library using loadNative(String, String) with the name specified by name. If name is not set, loadNative(String, String) will be called with the names specified by defaultNames. The first successful will be returned. If the library could not be loaded, the fallback will be called.
      Parameters:
      name - a Configuration that specifies the library name
      fallback - fallback to use if everything else fails
      defaultNames - the default library name(s)
      Returns:
      the shared library
      Throws:
      UnsatisfiedLinkError - if the library could not be loaded