Cet exemple vous guide tout au long du processus d'utilisation des bibliothèques partagées natives avec une application Java™ sur les systèmes Windows.
Procédure
- Créez un exemple d'application, 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( );
}
}
}
- Compiler Sample.java.
- Utilisez javah pour créer un fichier d'en-tête pour le code natif.
- Créez un fichier appelé Sample.c.
#include <stdio.h>
#include "Sample.h"
JNIEXPORT void JNICALL Java_Sample_printFromNative( JNIEnv * env, jobject obj )
{
printf( "Printing from native\n" );
}
- Compilez Sample.c , puis liez et liez dans une bibliothèque partagée qui peut être chargée et appelée dynamiquement à partir de Java.
cl -Ic:\java\include -Ic:\java\include\win64 -MD -LD Sample.c -Fe Sample.dll
- -MD
- Assure que Sample.dll est lié à la bibliothèque C à unités d'exécution multiples Win64.
- -LD
- Demande au compilateur C de générer une DLL au lieu d'un programme exécutable
Win64 normal.
- Exécutez la classe Sample.
set PATH=<path-generated-dll>;%PATH%
ou
java -Djava.library.path=. Sample
Sortie du programme :
Printing
from native
Résultats
Vous devez maintenant pouvoir utiliser la même infrastructure pour accéder aux bibliothèques partagées natives à partir des applications Java.