ur_rna.Utilities

## Class JniLoader

- java.lang.Object
- - ur_rna.Utilities.JniLoader

-     public class JniLoader
      extends java.lang.Object

  Loads a Native library or returns helpful error information if unsuccessful.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `JniLoader.NativeLibLoadError`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.util.List<java.lang.String>` | `allowedNames`
    `private java.lang.String` | `libraryTitle`
    `private java.lang.String` | `minVersion`
    `private java.util.function.Supplier<java.lang.String>` | `versionCheck`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JniLoader(java.lang.String libraryTitle)`
    `JniLoader(java.lang.String libraryTitle, java.lang.String... possibleLibNames)`
    `JniLoader(java.lang.String libraryTitle, java.util.function.Supplier<java.lang.String> versionCheck, java.lang.String requireMinVersion, java.lang.String... possibleLibNames)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addLibName(java.lang.String possibleName)`
    `java.util.List<java.lang.String>` | `getAllowedLibNames()`
    `static java.lang.String` | `getJvmBits()`
    `static java.lang.String` | `getJvmBits(java.lang.String result32, java.lang.String result64)` Detect the architecture of the Java platform (32 or 64 bits -- this is NOT necessarily the architecture of the OS!!)
    `private java.lang.String[]` | `getLibNames()`
    `java.lang.String` | `getLoadedLib()`
    `void` | `load()`
    `private void` | `setLibPath(java.lang.String javaLibraryPath)` Set the java.library.path System property and ensure that it will be re-evaluated by ClassLoaders
    `private boolean` | `tryLoadLibrary(java.lang.String[] libNames, java.lang.Throwable[] errors)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### allowedNames

          private java.util.List<java.lang.String> allowedNames

    - #### libraryTitle

          private java.lang.String libraryTitle

    - #### minVersion

          private java.lang.String minVersion

    - #### versionCheck

          private java.util.function.Supplier<java.lang.String> versionCheck

  - ### Constructor Detail

    - #### JniLoader

          public JniLoader(java.lang.String libraryTitle)

    - #### JniLoader

          public JniLoader(java.lang.String libraryTitle,
                           java.lang.String... possibleLibNames)

    - #### JniLoader

          public JniLoader(java.lang.String libraryTitle,
                           java.util.function.Supplier<java.lang.String> versionCheck,
                           java.lang.String requireMinVersion,
                           java.lang.String... possibleLibNames)

  - ### Method Detail

    - #### addLibName

          public void addLibName(java.lang.String possibleName)

    - #### getAllowedLibNames

          public java.util.List<java.lang.String> getAllowedLibNames()

    - #### getJvmBits

          public static java.lang.String getJvmBits()

    - #### getJvmBits

          public static java.lang.String getJvmBits(java.lang.String result32,
                                                    java.lang.String result64)

      Detect the architecture of the Java platform (32 or 64 bits -- this is NOT necessarily the architecture of the OS!!)
      Returns:
        returns result32 is the Java VM is 32-bit or result64 if the JVM is 64-bit.

    - #### getLibNames

          private java.lang.String[] getLibNames()

    - #### getLoadedLib

          public java.lang.String getLoadedLib()

    - #### load

          public void load()
                    throws JniLoader.NativeLibLoadError

      Throws:
        `JniLoader.NativeLibLoadError`

    - #### setLibPath

          private void setLibPath(java.lang.String javaLibraryPath)

      Set the java.library.path System property and ensure that it will be re-evaluated by ClassLoaders
      Parameters:
        `javaLibraryPath` - The new setting for java.library.path

    - #### tryLoadLibrary

          private boolean tryLoadLibrary(java.lang.String[] libNames,
                                         java.lang.Throwable[] errors)