Questo esempio illustra il processo di utilizzo delle librerie condivise native con un'applicazione Java™ su sistemi Windows.
Procedura
- 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( );
}
}
}
- Compilare Sample.java.
- Utilizzare javah per creare un file di intestazione per il codice nativo.
- 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" );
}
- 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 .
- 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.