Class MissingJNIRegistrationError

java.lang.Object
java.lang.Throwable
java.lang.Error
org.graalvm.nativeimage.MissingJNIRegistrationError
All Implemented Interfaces:
Serializable

public final class MissingJNIRegistrationError extends Error
This exception is thrown when a JNI query tries to access an element that was not registered for JNI access in the program. When an element is not registered, the exception will be thrown both for elements that exist and elements that do not exist on the given classpath.

The purpose of this exception is to easily discover unregistered elements and to assure that all JNI operations for registered elements have the expected behaviour.

Queries will succeed (or throw the expected error) if the element was registered for JNI access. If that is not the case, a MissingJNIRegistrationError will be thrown.

The exception thrown by the JNI query is a pending exception that needs to be explicitly checked by the calling native code. Examples:

Registration: "fields": [{"name": "registeredField"}, {"name": "registeredNonexistentField"}]
GetFieldID(declaringClass, "registeredField") will return the expected field.
GetFieldID(declaringClass, "registeredNonexistentField") will throw a NoSuchFieldError.
GetFieldID(declaringClass, "unregisteredField") will throw a MissingJNIRegistrationError.
GetFieldID(declaringClass, "unregisteredNonexistentField") will throw a MissingJNIRegistrationError.

Since:
24.1
See Also:
  • Constructor Details

    • MissingJNIRegistrationError

      public MissingJNIRegistrationError(String message, Class<?> elementType, Class<?> declaringClass, String elementName, String signature)
      Since:
      24.1
  • Method Details

    • getElementType

      public Class<?> getElementType()
      Returns:
      The type of the element trying to be queried (Class, Method, Field or Constructor).
      Since:
      23.0
    • getDeclaringClass

      public Class<?> getDeclaringClass()
      Returns:
      The class on which the missing query was tried, or null on static queries.
      Since:
      23.0
    • getElementName

      public String getElementName()
      Returns:
      The name of the queried element.
      Since:
      23.0
    • getSignature

      public String getSignature()
      Returns:
      The signature passed to the query, or null if the query doesn't take a signature as argument.
      Since:
      23.0