Esempio di utilizzo di librerie condivise su Windows

Questo esempio illustra il processo di utilizzo delle librerie condivise native con un'applicazione Java™ su sistemi Windows.

Procedura

  1. Creare un'applicazione di esempio, Sample.java
    public class Sample
    {
       public native void printFromNative( );
    
       public static void main( String[] args )
       {
          Sample sample = new Sample( );
          sample.printFromNative( );
       }
    
       static
       {
          try
          {
             System.loadLibrary( "Sample" );
          }
          catch ( Exception e )
          {
             System.out.println( "ERROR: Unable to load libSample.so");
             e.printStackTrace( );
          }
       }
    }
  2. Compilare Sample.java.
    javac Sample.java
  3. Utilizzare javah per creare un file di intestazione per il codice nativo.
    javah Sample
  4. Creare un file denominato Sample.c.
    #include <stdio.h>
    #include "Sample.h"
    
    JNIEXPORT void JNICALL Java_Sample_printFromNative( JNIEnv * env, jobject obj )
    {
       printf( "Printing from native\n" );
    }
  5. Compilare Sample.c e quindi collegare e collegare in una libreria condivisa che può essere caricata e richiamata dinamicamente da Java.
    cl -Ic:\java\include -Ic:\java\include\win64  -MD -LD Sample.c -Fe Sample.dll
    -MG
    Garantisce che Sample.dll sia collegato alla libreria C a più thread Win64 .
    -LD
    Indica al compilatore C di creare una DLL invece di un normale programma eseguibile Win64 .
  6. Eseguire la classe di esempio
    set PATH=<path-generated-dll>;%PATH%
    oppure
    java -Djava.library.path=. Sample
    Il programma emetterà:

    Printing from native

Risultati

Ora è possibile utilizzare lo stesso framework per accedere alle librerie condivise native dalle applicazioni Java.